defmodule Mouth do @moduledoc """ Documentation for Mouth. """ defmodule NilRecipientsError do @moduledoc false defexception [:message] def exception(message) do message = """ All recipients were set to nil. Must specify at least one recipient. Full message - #{inspect message, limit: :infinity} """ %NilRecipientsError{message: message} end end defmodule ConfigError do @moduledoc false defexception [:message] def exception({config, field}) do message = """ There was no #{field} set for the #{config.adapter} adapter. * Here are the config options that were passed in: #{inspect config} """ %ConfigError{message: message} end end def raise_config_error(config, field) do raise ConfigError, {config, field} end defmodule ApiError do @moduledoc false defexception [:message] def exception({service_name, response, params}) do message = """ There was a problem sending the message through the #{service_name} API. Here is the response: #{inspect response, limit: :infinity} Here are the params we sent: #{inspect params, limit: :infinity} """ %ApiError{message: message} end end def raise_api_error(service_name, response, params) do raise ApiError, {service_name, response, params} end end