defmodule Solicit.Plugs.Parsers do
@moduledoc """
Creates a wrapper around Plug.Parsers to catch Parsers Errors.
See Plug.Parsers documentation
"""
alias Plug.Parsers
def init(opts), do: Parsers.init(opts)
def call(conn, options) do
Parsers.call(conn, options)
rescue
_e in Parsers.ParseError ->
Solicit.Response.bad_request(conn, "Request is malformed.")
_e in Parsers.RequestTooLargeError ->
Solicit.Response.request_entity_too_large(conn)
_e in Parsers.UnsupportedMediaTypeError ->
Solicit.Response.unsupported_media_type(conn)
_e in Parsers.BadEncodingError ->
Solicit.Response.bad_request(conn, "Request has bad encoding.")
end
end