Current section
Files
Jump to
Current section
Files
lib/noa_web/controllers/fallback_controller.ex
defmodule NoaWeb.FallbackController do
@moduledoc false
use NoaWeb, :controller
@error_to_http_status %{
invalid_request: 400,
invalid_scope: 400,
invalid_grant: 400,
unsupported_grant_type: 400,
unsupported_response_type: 400,
unsupported_token_type: 400,
store_failure: 500,
server_error: 500,
temporarily_unavailable: 503,
}
def call(conn, {:error, %Ecto.Changeset{} = changeset}) do
conn
|> put_status(:unprocessable_entity)
|> render(NoaWeb.ChangesetView, "error.json", changeset: changeset)
end
def call(conn, {:error, ec}) when is_atom(ec) do
conn
|> put_status(Map.get(@error_to_http_status, ec, 400))
|> json(%{error: ec})
end
def call(conn, {:error, ec, desc}) when is_atom(ec) and is_binary(desc) do
conn
|> put_status(Map.get(@error_to_http_status, ec, 400))
|> json(%{error: ec, error_description: desc})
end
end