Poodle.RateLimit (poodle v1.0.0)

View Source

Rate limit information for the Poodle SDK.

Handles parsing and exposing rate limit data from API responses.

Summary

Functions

Check if rate limit is exceeded.

Parse rate limit information from HTTP headers.

Get the time until rate limit resets.

Get the recommended wait time before retrying.

Types

t()

@type t() :: %Poodle.RateLimit{
  limit: integer() | nil,
  remaining: integer() | nil,
  reset: integer() | nil,
  retry_after: integer() | nil
}

Functions

exceeded?(arg1)

@spec exceeded?(t()) :: boolean()

Check if rate limit is exceeded.

Examples

iex> rate_limit = %Poodle.RateLimit{remaining: 0}
iex> Poodle.RateLimit.exceeded?(rate_limit)
true

iex> rate_limit = %Poodle.RateLimit{remaining: 1}
iex> Poodle.RateLimit.exceeded?(rate_limit)
false

from_headers(headers)

@spec from_headers(map()) :: t()

Parse rate limit information from HTTP headers.

Examples

iex> headers = %{"ratelimit-limit" => "2", "ratelimit-remaining" => "1", "ratelimit-reset" => "1640995200"}
iex> Poodle.RateLimit.from_headers(headers)
%Poodle.RateLimit{limit: 2, remaining: 1, reset: 1640995200}

time_until_reset(arg1)

@spec time_until_reset(t()) :: integer() | nil

Get the time until rate limit resets.

Examples

iex> rate_limit = %Poodle.RateLimit{reset: 1640995200}
iex> Poodle.RateLimit.time_until_reset(rate_limit)
300  # seconds until reset

wait_time(rate_limit)

@spec wait_time(t()) :: integer() | nil

Get the recommended wait time before retrying.

Returns retry_after if available, otherwise calculates based on reset time.

Examples

iex> rate_limit = %Poodle.RateLimit{retry_after: 30}
iex> Poodle.RateLimit.wait_time(rate_limit)
30