Skip to main content

lib/access_grid/http_failure.ex

defmodule AccessGrid.HttpFailure do
  @moduledoc """
  Represents an HTTP request failure.

  This covers both transport-level failures (connection refused, timeout) and
  HTTP error responses (4xx, 5xx status codes).

  This is a struct, not an exception. All HTTP client implementations must
  normalize their errors to this struct.
  """

  @type t :: %__MODULE__{
          body_decoded: term() | nil,
          body_raw: binary() | nil,
          content_type: String.t() | nil,
          message: String.t() | nil,
          original: term(),
          reason: atom(),
          status: integer() | nil
        }

  defstruct [:body_decoded, :body_raw, :content_type, :message, :original, :reason, :status]
end