Class: Fulfil::RateLimit

Inherits:
Object
  • Object
show all
Defined in:
lib/fulfil/rate_limit.rb

Overview

The ‘Fulfil::RateLimit` allows clients to keep track of their API usage and to analyze Fulfil’s response HTTP headers.

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#limitObject

Returns the value of attribute limit.



7
8
9
# File 'lib/fulfil/rate_limit.rb', line 7

def limit
  @limit
end

#requests_leftObject

Returns the value of attribute requests_left.



7
8
9
# File 'lib/fulfil/rate_limit.rb', line 7

def requests_left
  @requests_left
end

#resets_atObject

Returns the value of attribute resets_at.



7
8
9
# File 'lib/fulfil/rate_limit.rb', line 7

def resets_at
  @resets_at
end

Instance Method Details

#analyse!(headers) ⇒ true

Analyses the rate limit based on the response headers from Fulfil.

Parameters:

  • headers (HTTP::Headers)

    The HTTP response headers from Fulfil.

Returns:

  • (true)

Raises:



13
14
15
16
17
18
19
20
21
22
23
# File 'lib/fulfil/rate_limit.rb', line 13

def analyse!(headers)
  rate_limit_headers = RateLimitHeaders.new(headers)

  self.limit = rate_limit_headers.limit
  self.requests_left = rate_limit_headers.requests_left
  self.resets_at = rate_limit_headers.resets_at

  return true if requests_left?

  report_rate_limit_hit_and_raise
end

#requests_left?Boolean

Returns whether there are any requests left in the current rate limit window.

Returns:

  • (Boolean)


27
28
29
# File 'lib/fulfil/rate_limit.rb', line 27

def requests_left?
  requests_left&.positive?
end