Current section
Files
Jump to
Current section
Files
lib/response/fault_processor.ex
defmodule ExVerticalBooking.Response.FaultProcessor do
alias ExVerticalBooking.Error
def create_response(e, meta) do
e = convert(e)
{:error, e,
meta |> Map.put(:success, false) |> Map.put(:errors, [Error.message(e) | meta.errors])}
end
def convert(%{faultcode: code, faultstring: _string}), do: Error.exception(code)
def convert(%{"faultcode" => code, "faultstring" => _string}), do: Error.exception(code)
def convert({:fatal, reason}), do: Error.exception({:fatal, reason})
def convert({:exit, reason}), do: Error.exception({:exit, reason})
def convert({:badrpc, {_, reason}}), do: Error.exception(reason)
def convert({:error, _, %{errors: [reason]}}), do: Error.exception(reason)
def convert(%ArgumentError{} = reason), do: Error.exception({:argument_error, reason})
def convert(%FunctionClauseError{} = reason), do: Error.exception({:function_clause, reason})
end