Proxichat/web/channels/meta_channel.ex
Mikko Ahlroth d031961a84 HÄXFEST 2015 !!! ! ! ! !
ZZZZZZZZZ
2015-11-29 06:34:42 +02:00

29 lines
1 KiB
Elixir

defmodule Proxichat.MetaChannel do
use Phoenix.Channel
alias Phoenix.Token
alias Proxichat.Endpoint
alias Proxichat.ChannelAuthenticator
alias Proxichat.NetworkUtils
def join("meta:lobby", %{"lat" => lat, "lon" => lon}, socket) do
id = ChannelAuthenticator.create_user
network = NetworkUtils.get_network lat, lon
Endpoint.broadcast! "networks:#{network}", "here_i_am", %{user_id: id, lat: lat, lon: lon}
{:ok, %{user_id: id, goto: network}, socket}
end
def join("meta:" <> user_id, message, socket) do
case Token.verify socket, "user", message.token do
{:ok, ^user_id} -> {:ok, %{msg: "yo"}, socket}
_ -> {:error, %{reason: "NOOOOOOOO"}}
end
end
def handle_in("new_loc", %{"body" => %{"lat" => lat, "lon" => lon}, "user_id" => id}, socket) do
new_network = NetworkUtils.get_network lat, lon
Endpoint.broadcast! "networks:#{new_network}", "here_i_am", %{user_id: id, lat: lat, lon: lon}
push socket, "goto", %{goto: new_network}
{:noreply, socket}
end
end