lib/apical/_exceptions/content_type_error.ex

defmodule Apical.Exceptions.MissingContentTypeError do
  @moduledoc """
  Error raised when the `content-type` header is missing from the request.

  This error should result in a http 400 status code.
  see: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400
  """

  defexception plug_status: 400

  def message(_), do: "missing content-type header"
end

defmodule Apical.Exceptions.MultipleContentTypeError do
  @moduledoc """
  Error raised multiple `content-type` headers are provided by the request.

  This error should result in a http 400 status code.
  see: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400
  """

  defexception plug_status: 400

  def message(_), do: "multiple content-type headers found"
end

defmodule Apical.Exceptions.InvalidContentTypeError do
  @moduledoc """
  Error raised when the `content-type` header does not parse to a valid
  mimetype string.

  This error should result in a http 400 status code.
  see: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400
  """

  defexception [:invalid_string, plug_status: 400]

  def message(error), do: "invalid content-type header provided: #{error.invalid_string}"
end