Regc.Oci.Transport.Request (regc v0.0.2)

View Source

A single request passed to a custom Regc.Oci.Transport.

Request bodies make replayability explicit:

  • :none and {:iodata, data} are replayable.
  • {:factory, fun} is replayable by invoking fun for each attempt.
  • {:stream, enumerable} is a one-shot body and must not be replayed.

response_mode selects bounded buffering or incremental streaming. max_body_bytes remains as a compatibility bridge for existing custom transports; new code should use response_mode.

resolved_addresses, when present, contains addresses already resolved and approved by Regc's built-in redirect or authentication policy.

Summary

Functions

Returns whether the request body can be safely produced again.

Returns the effective response mode.

Types

body()

@type body() ::
  :none
  | {:iodata, iodata()}
  | {:stream, Enumerable.t()}
  | {:factory, (-> Enumerable.t())}

method()

@type method() :: :head | :get | :post | :put | :patch | :delete

response_mode()

@type response_mode() :: {:buffer, non_neg_integer() | :infinity} | :stream

retry_policy()

@type retry_policy() :: :never | :safe | :idempotent

t()

@type t() :: %Regc.Oci.Transport.Request{
  body: body(),
  content_length: non_neg_integer() | :unknown,
  headers: [{String.t(), String.t()}],
  max_body_bytes: non_neg_integer() | :infinity,
  metadata: map(),
  method: method(),
  resolved_addresses: [Regc.Oci.Transport.Address.address()] | nil,
  response_mode: response_mode() | nil,
  retry_policy: retry_policy(),
  url: String.t()
}

Functions

replayable?(arg1)

@spec replayable?(t() | body()) :: boolean()

Returns whether the request body can be safely produced again.

response_mode(request)

@spec response_mode(t()) :: response_mode()

Returns the effective response mode.

Requests created before response modes were introduced continue to map max_body_bytes to a buffered response.