Skip to main content

lib/safe_rpc/adapter/http/request.ex

defmodule SafeRPC.Adapter.HTTP.Request do
  @moduledoc "Framework-neutral HTTP request envelope for SafeRPC adapters."

  @type body :: :empty | {:full, iodata()}
  @type header :: {String.t(), String.t()}
  @type t :: %__MODULE__{
          method: String.t(),
          scheme: String.t(),
          host: String.t(),
          port: pos_integer(),
          path: String.t(),
          query: String.t(),
          headers: [header()],
          body: body(),
          remote_ip: :inet.ip_address() | nil
        }

  defstruct [
    :method,
    :scheme,
    :host,
    :port,
    :path,
    query: "",
    headers: [],
    body: :empty,
    remote_ip: nil
  ]
end