aboutsummaryrefslogtreecommitdiff
path: root/shardweb/lib/shard_web/controllers
diff options
context:
space:
mode:
Diffstat (limited to 'shardweb/lib/shard_web/controllers')
-rw-r--r--shardweb/lib/shard_web/controllers/page_controller.ex7
-rw-r--r--shardweb/lib/shard_web/controllers/peer_controller.ex25
-rw-r--r--shardweb/lib/shard_web/controllers/room_controller.ex12
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