Packages

Extracts complexities of Cloudtrax into a nice module

Current section

Files

Jump to
cl_wifi lib router.ex
Raw

lib/router.ex

defmodule CLWiFi.Router do
use Plug.Router
use Plug.ErrorHandler
require Logger
plug :development_mode_check
plug :match
plug :dispatch
forward "/auth/:location_id", to: CLWiFi.AuthRouter
forward "/splash/:location_id", to: CLWiFi.SplashRouter
match(_) do
ExWeb.Errors.render(conn, 404)
end
def development_mode_check(conn, _opts) do
if CLWiFi.Development.development_mode?(conn) do
conn
|> put_private(:development, nil)
|> put_private(:development_mode, true)
else
conn
end
end
def handle_errors(conn, %{kind: _, reason: %FunctionClauseError{arity: 4, function: :do_match, module: __MODULE__}, stack: _}) do
ExWeb.Errors.render(conn, 404)
end
def handle_errors(conn, %{kind: _kind, reason: _reason, stack: _stack}) do
ExWeb.Errors.render(conn, 500)
end
defmacro __using__(opts) do
quote do
require Logger
use Plug.ErrorHandler
def render(conn, module, page \\ :index, assigns \\ %{}) do
CLWiFi.render(conn, module, page, assigns)
end
def render_if_failed(conn, module, page \\ :index, assigns \\ %{}) do
CLWiFi.render_if_failed(conn, module, page, assigns)
end
def render_if_successful(conn, module, page \\ :index, assigns \\ %{}) do
CLWiFi.render_if_successful(conn, module, page, assigns)
end
def redirect_to(conn, url, params \\ %{}, body \\ nil) do
CLWiFi.redirect_to(conn, url, params, body)
end
def redirect_to_if_successful(conn, url, params \\ %{}, body \\ nil) do
CLWiFi.redirect_to_if_successful(conn, url, params, body)
end
def redirect_to_if_failed(conn, url, params \\ %{}, body \\ nil) do
CLWiFi.redirect_to_if_failed(conn, url, params, body)
end
def validate(conn, module, function, commit_function) do
ExWeb.validate(conn, module, function, commit_function)
end
def forms(conn, module, form) do
ExWeb.forms(conn, module, form)
end
def add_url_for(%{assigns: assigns} = conn, url, opts \\ []) do
CLWiFi.add_url_for(conn, url, opts)
end
def handle_errors(%{state: :sent} = conn, _) do
conn
end
def handle_errors(conn, %{kind: _, reason: %FunctionClauseError{arity: 4, function: :do_match, module: unquote(__CALLER__.module)}, stack: _}) do
ExWeb.Errors.render(conn, 404)
end
def handle_errors(conn, %{kind: _kind, reason: _reason, stack: _stack}) do
ExWeb.Errors.render(conn, 500)
end
defoverridable [handle_errors: 2]
end
end
end