Xero.HTTP.RateLimiter (Xero v1.0.0)

Copy Markdown View Source

Per-tenant rate limit tracking (token bucket, ETS-backed).

Tracks Xero's limits:

  • 60 requests/minute per tenant
  • 5,000 requests/day per tenant

Returns :ok when the request may proceed, or {:wait, ms} when a limit is exhausted.

Summary

Functions

child_spec(init_arg)

Returns a specification to start this module under a supervisor.

See Supervisor.

get_state(tenant_id)

@spec get_state(String.t()) :: map()

start_link(opts \\ [])

track_request(tenant_id)

@spec track_request(String.t()) :: :ok | {:wait, pos_integer()}

update_from_headers(tenant_id, headers)

@spec update_from_headers(String.t(), list()) :: :ok