Module: Apidepth::RateLimitHeaders

Defined in:
lib/apidepth/rate_limit_headers.rb

Constant Summary collapse

REMAINING_HEADERS =

Ordered header names per field — first match wins.

%w[
  x-ratelimit-remaining-requests
  x-ratelimit-remaining
  ratelimit-remaining
].freeze
LIMIT_HEADERS =
%w[
  x-ratelimit-limit-requests
  x-ratelimit-limit
  ratelimit-limit
].freeze
RESET_HEADERS =
%w[
  x-ratelimit-reset-requests
  x-ratelimit-reset
  ratelimit-reset
  retry-after
].freeze

Class Method Summary collapse

Class Method Details

.extract(response, now_ms) ⇒ Object

Extract rate limit fields from a Net::HTTP::Response. Returns a Hash with :rl_remaining, :rl_limit, :rl_reset_at keys, or nil if none of the recognised headers are present.



59
60
61
62
63
64
65
66
67
# File 'lib/apidepth/rate_limit_headers.rb', line 59

def self.extract(response, now_ms)
  remaining = find_integer(response, REMAINING_HEADERS)
  limit     = find_integer(response, LIMIT_HEADERS)
  reset_at  = find_reset_ms(response, RESET_HEADERS, now_ms)

  return nil if remaining.nil? && limit.nil? && reset_at.nil?

  { rl_remaining: remaining, rl_limit: limit, rl_reset_at: reset_at }.compact
end