diff options
Diffstat (limited to 'shardweb/lib/shard_web/controllers')
-rw-r--r-- | shardweb/lib/shard_web/controllers/page_controller.ex | 7 | ||||
-rw-r--r-- | shardweb/lib/shard_web/controllers/peer_controller.ex | 25 | ||||
-rw-r--r-- | shardweb/lib/shard_web/controllers/room_controller.ex | 12 |
3 files changed, 44 insertions, 0 deletions
diff --git a/shardweb/lib/shard_web/controllers/page_controller.ex b/shardweb/lib/shard_web/controllers/page_controller.ex new file mode 100644 index 0000000..a590630 --- /dev/null +++ b/shardweb/lib/shard_web/controllers/page_controller.ex @@ -0,0 +1,7 @@ +defmodule ShardWeb.PageController do + use ShardWeb, :controller + + def index(conn, _params) do + render conn, "index.html" + end +end diff --git a/shardweb/lib/shard_web/controllers/peer_controller.ex b/shardweb/lib/shard_web/controllers/peer_controller.ex new file mode 100644 index 0000000..0bf6ded --- /dev/null +++ b/shardweb/lib/shard_web/controllers/peer_controller.ex @@ -0,0 +1,25 @@ +defmodule ShardWeb.PeerController do + use ShardWeb, :controller + + require Logger + + def add(conn, _params) do + try do + ip = conn.params["ip"] + port = conn.params["port"] + {:ok, ip_tuple} = case :inet.parse_address(to_charlist(ip)) do + {:ok, tup} -> {:ok, tup} + _ -> + case :inet.gethostbyname(to_charlist(ip)) do + {:ok, {:hostent, _, _, :inet, 4, [ip_tup | _]}} -> {:ok, ip_tup} + _ -> :error + end + end + {port_num, _} = Integer.parse port + Shard.Manager.add_peer(ip_tuple, port_num) + rescue + _ -> nil + end + redirect conn, to: page_path(conn, :index) + end +end diff --git a/shardweb/lib/shard_web/controllers/room_controller.ex b/shardweb/lib/shard_web/controllers/room_controller.ex new file mode 100644 index 0000000..4d9adb4 --- /dev/null +++ b/shardweb/lib/shard_web/controllers/room_controller.ex @@ -0,0 +1,12 @@ +defmodule ShardWeb.RoomController do + use ShardWeb, :controller + + import PhoenixGon.Controller + + def show(conn, %{"room" => room}) do + conn = put_gon(conn, chat_room: room) + render conn, "show.html", + room: room, + name: Shard.Identity.get_nickname + end +end |