defmodule Oaskit.ErrorHandler do alias Oaskit.Errors.InvalidBodyError alias Oaskit.Errors.InvalidParameterError alias Oaskit.Errors.MissingParameterError alias Oaskit.Errors.UnsupportedMediaTypeError alias Oaskit.Plugs.ValidateRequest @moduledoc """ A behaviour for validation errors handlers. """ @type reason :: InvalidBodyError.t() | UnsupportedMediaTypeError.t() | {:parameters_errors, [InvalidParameterError.t() | MissingParameterError.t()]} @doc """ Accepts the Plug.Conn struct, an error reason and the options passed to the `#{inspect(ValidateRequest)}` plug. This function is called when request validation fails and an error must be returned to the remote client. This means that function _must_ send a response. Responses can be sent just as in Phoenix controllers, using `Plug.Conn.send_resp/3`, `Phoenix.Controller.json/2`, `Phoenix.Controller.text/2`, _etc._ The `arg` argument is the options given to `#{inspect(ValidateRequest)}`. See this module documentation for more information. """ @callback handle_error(Plug.Conn.t(), reason, arg :: term) :: Plug.Conn.t() end