defmodule MaatFeatherWeb.FallbackController do @moduledoc """ Translates controller action results into valid `Plug.Conn` responses. See `Phoenix.Controller.action_fallback/1` for more details. """ use MaatFeatherWeb, :controller # This clause handles errors returned by Ecto's insert/update/delete. def call(conn, {:error, %Ecto.Changeset{} = changeset}) do conn |> put_status(:unprocessable_entity) |> put_view(MaatFeatherWeb.ChangesetView) |> render("error.json", changeset: changeset) end # This clause is an example of how to handle resources that cannot be found. def call(conn, {:error, :not_found}) do conn |> put_status(:not_found) |> put_view(MaatFeatherWeb.ErrorView) |> render(:"404") end def call(conn, {:error, {:not_found, reason}}) do conn |> put_status(:not_found) |> put_view(MaatFeatherWeb.ErrorView) |> render("error.json", %{error: reason}) end def call(conn, {:error, :unauthorized}) do conn |> put_status(:not_found) |> put_view(MaatFeatherWeb.ErrorView) |> render(:"401") end def call(conn, {:error, {:unauthorized, reason}}) do conn |> put_status(:unauthorized) |> put_view(MaatFeatherWeb.ErrorView) |> render("error.json", %{error: reason}) end def call(conn, {:error, :internal_server_error}) do conn |> put_status(:internal_server_error) |> put_view(MaatFeatherWeb.ErrorView) |> render(:"500") end def call(conn, error) do conn |> put_status(:internal_server_error) |> put_view(MaatFeatherWeb.ErrorView) |> render("error.json", %{error: error}) end end