ExDaytona.Response (ex_daytona v0.3.0)

Copy Markdown View Source

Full response envelope for generated operations.

By default generated calls return just the decoded value ({:ok, model}). Passing response: :full in an operation's opts returns {:ok, %ExDaytona.Response{}} instead, preserving the response metadata that is otherwise discarded:

{:ok, %ExDaytona.Response{data: sandbox, request_id: id, rate_limit: rl}} =
  ExDaytona.Api.Sandbox.get_sandbox(conn, "sb-1", response: :full)
  • data — the decoded value the default mode would have returned
  • status — HTTP status
  • headers — response headers, names lower-cased, order preserved
  • request_id — the provider's request/correlation id, when sent
  • rate_limit%{limit, remaining, reset} (integers, nil when the provider omitted a part)
  • retry_after — parsed Retry-After in seconds (integer and HTTP-date forms), when present
  • retry_count — transport-level retries the SDK performed for this call (0 when it succeeded first try)

Declared error models are wrapped the same way, so error metadata is never lost. The facade's ExDaytona.Error carries the same fields.

Summary

Functions

Build a response envelope from a Tesla.Env and the decoded data.

The first value of name (case-insensitive) from a header list or a %ExDaytona.Response{}.

All values of name (case-insensitive).

Lower-case header names, preserving order and unknown headers.

Parse a Retry-After header value: integer seconds, or an HTTP-date (delta from now, floored at 0). Returns nil for absent/invalid values.

Types

rate_limit()

@type rate_limit() :: %{
  limit: non_neg_integer() | nil,
  remaining: non_neg_integer() | nil,
  reset: non_neg_integer() | nil
}

t()

@type t() :: %ExDaytona.Response{
  data: term(),
  headers: [{binary(), binary()}],
  rate_limit: rate_limit() | nil,
  request_id: binary() | nil,
  retry_after: non_neg_integer() | nil,
  retry_count: non_neg_integer(),
  status: non_neg_integer()
}

Functions

from_env(env, data)

@spec from_env(Tesla.Env.t(), term()) :: t()

Build a response envelope from a Tesla.Env and the decoded data.

get_header(headers, name)

@spec get_header(t() | [{binary(), binary()}], binary()) :: binary() | nil

The first value of name (case-insensitive) from a header list or a %ExDaytona.Response{}.

get_headers(headers, name)

@spec get_headers(t() | [{binary(), binary()}], binary()) :: [binary()]

All values of name (case-insensitive).

normalize_headers(headers)

@spec normalize_headers([{binary(), binary()}] | nil) :: [{binary(), binary()}]

Lower-case header names, preserving order and unknown headers.

parse_retry_after(value)

@spec parse_retry_after(binary() | nil) :: non_neg_integer() | nil

Parse a Retry-After header value: integer seconds, or an HTTP-date (delta from now, floored at 0). Returns nil for absent/invalid values.