Class: Easyship::RateLimiting::WindowRateLimiter
- Inherits:
-
RateLimiter
- Object
- RateLimiter
- Easyship::RateLimiting::WindowRateLimiter
- Defined in:
- lib/easyship/rate_limiting/window_rate_limiter.rb
Overview
Represents WindowRateLimiter
Instance Attribute Summary collapse
-
#requests_per_minute ⇒ Object
readonly
Returns the value of attribute requests_per_minute.
-
#requests_per_second ⇒ Object
readonly
Returns the value of attribute requests_per_second.
-
#timestamps ⇒ Object
readonly
Returns the value of attribute timestamps.
Instance Method Summary collapse
-
#initialize(requests_per_second:, requests_per_minute:) ⇒ WindowRateLimiter
constructor
A new instance of WindowRateLimiter.
- #throttle! ⇒ Object
Constructor Details
#initialize(requests_per_second:, requests_per_minute:) ⇒ WindowRateLimiter
Returns a new instance of WindowRateLimiter.
9 10 11 12 13 14 |
# File 'lib/easyship/rate_limiting/window_rate_limiter.rb', line 9 def initialize(requests_per_second:, requests_per_minute:) super() @requests_per_second = requests_per_second @requests_per_minute = requests_per_minute = [] end |
Instance Attribute Details
#requests_per_minute ⇒ Object (readonly)
Returns the value of attribute requests_per_minute.
7 8 9 |
# File 'lib/easyship/rate_limiting/window_rate_limiter.rb', line 7 def requests_per_minute @requests_per_minute end |
#requests_per_second ⇒ Object (readonly)
Returns the value of attribute requests_per_second.
7 8 9 |
# File 'lib/easyship/rate_limiting/window_rate_limiter.rb', line 7 def requests_per_second @requests_per_second end |
#timestamps ⇒ Object (readonly)
Returns the value of attribute timestamps.
7 8 9 |
# File 'lib/easyship/rate_limiting/window_rate_limiter.rb', line 7 def end |
Instance Method Details
#throttle! ⇒ Object
16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/easyship/rate_limiting/window_rate_limiter.rb', line 16 def throttle! now = Time.now << now # Remove timestamps older than a minute .reject! { |t| t < now - 60 } check_second_window(now) check_minute_window(now) end |