Files
wanderer/lib/wanderer_app_web/controllers/fallback_controller.ex

51 lines
1.7 KiB
Elixir

defmodule WandererAppWeb.FallbackController do
use WandererAppWeb, :controller
alias WandererAppWeb.Helpers.APIUtils
# Handles not_found errors from with/else
def call(conn, {:error, :not_found}) do
APIUtils.error_response(conn, :not_found, "Not found", "The requested resource could not be found")
end
# Handles invalid_id errors
def call(conn, {:error, :invalid_id}) do
APIUtils.error_response(conn, :bad_request, "Invalid system ID")
end
# Handles invalid_coordinates_format errors
def call(conn, {:error, :invalid_coordinates_format}) do
APIUtils.error_response(conn, :bad_request, "Invalid coordinates format. Use %{\"coordinates\" => %{\"x\" => number, \"y\" => number}}")
end
# Handles not_associated errors
def call(conn, {:error, :not_associated}) do
APIUtils.error_response(conn, :not_found, "Connection not associated with specified system")
end
# Handles not_involved errors
def call(conn, {:error, :not_involved}) do
APIUtils.error_response(conn, :bad_request, "Connection must involve specified system")
end
# Handles creation_failed errors
def call(conn, {:error, :creation_failed}) do
APIUtils.error_response(conn, :internal_server_error, "Failed to create resource")
end
# Handles deletion_failed errors
def call(conn, {:error, :deletion_failed}) do
APIUtils.error_response(conn, :internal_server_error, "Failed to delete resource")
end
# Handles any other {:error, message} returns
def call(conn, {:error, msg}) when is_binary(msg) do
APIUtils.error_response(conn, :bad_request, msg)
end
# Handles any other unmatched errors
def call(conn, _error) do
APIUtils.error_response(conn, :internal_server_error, "An unexpected error occurred")
end
end