Skip to main content

lib/router.ex

defmodule Amur.Router do
  import Plug.Conn

  def init(opts), do: opts

  def call(conn, _opts) do
    conn =
      conn
      |> fetch_query_params()
      |> fetch_session()

    case {conn.method, conn.path_info} do
      {"GET", ["logout"]} ->
        Amur.Controller.logout(conn, %{})

      {"GET", [provider]} ->
        Amur.Controller.request(conn, %{"provider" => provider})

      {"GET", [provider, "callback"]} ->
        Amur.Controller.callback(conn, Map.put(conn.params, "provider", provider))

      _ ->
        conn
    end
  end
end