Current section

Files

Jump to
kandis lib kandis_utils kd_error.ex
Raw

lib/kandis_utils/kd_error.ex

defmodule Kandis.KdError do
defexception message: "error", short_message: "", plug_status: 503, data: :no_extra_info
def full_message(%__MODULE__{} = error) do
res = "Error: #{error.message}"
case error.data do
:no_extra_info -> res
nil -> res
data -> res <> " ⇢ " <> inspect(data, limit: 3, pretty: true)
end
end
def full_message(error) do
"Error: " <> inspect(error, limit: 10)
end
def exception({msg}) do
%__MODULE__{message: msg, data: nil, short_message: msg}
end
def exception({msg, nil}) do
%__MODULE__{message: msg, data: nil, short_message: msg}
end
def exception({msg, extra_data}) do
long_msg = msg <> "\n\n" <> inspect(extra_data, limit: 3000, pretty: true) <> "\n"
%__MODULE__{message: long_msg, data: :no_extra_info, short_message: msg}
end
def exception(msg) do
%__MODULE__{message: msg, data: nil, short_message: msg}
end
def die(data, options) do
raise __MODULE__, {options[:label], data}
end
def log(data, options) do
data |> Kandis.KdHelpers.log(options[:label])
end
end