Current section
Files
Jump to
Current section
Files
lib/plug.ex
defmodule CLWiFi.Plug do
alias Plug.Conn
alias CLWiFi.Session
def init(options) do
options
end
def call(%{query_params: %{"connection" => session_name}} = conn, _opts) do
if Session.exists?(session_name) do
assigns = Session.get_assigns(session_name)
conn
|> Plug.Conn.put_private(:connection, session_name)
|> assign_session_data_to_conn(Map.to_list(assigns))
else
conn
|> ExWeb.Errors.render(404)
|> Plug.Conn.halt
end
end
def call(conn, _opts) do
conn
|> ExWeb.Errors.render(500)
|> Plug.Conn.halt
end
defp assign_session_data_to_conn(conn, []), do: conn
defp assign_session_data_to_conn(conn, [{key, value}|rest]) do
conn
|> Plug.Conn.assign(key, value)
|> assign_session_data_to_conn(rest)
end
end