Class: RateLimitedJira::Client::RedisBased
- Inherits:
-
RateLimitedJira::Client
- Object
- JIRA::Client
- RateLimitedJira::Client
- RateLimitedJira::Client::RedisBased
- Defined in:
- lib/rate_limited_jira/client/redis_based.rb
Constant Summary collapse
- RATE_LIMITER_KEY =
"rate_limited_jira_api_requests"
Constants inherited from RateLimitedJira::Client
NO_RATE_INTERVAL_IN_SECONDS, NO_RATE_LIMIT_PER_INTERVAL
Instance Attribute Summary
Attributes inherited from RateLimitedJira::Client
#rate_interval_in_seconds, #rate_limit_per_interval
Class Method Summary collapse
Instance Method Summary collapse
Methods inherited from RateLimitedJira::Client
build, #initialize, #original_request, #request
Constructor Details
This class inherits a constructor from RateLimitedJira::Client
Class Method Details
.rate_limiter(rate_limiter_key, rate_interval) ⇒ Object
27 28 29 |
# File 'lib/rate_limited_jira/client/redis_based.rb', line 27 def self.rate_limiter(rate_limiter_key, rate_interval) @rate_limiter ||= Ratelimit.new(rate_limiter_key, bucket_interval: rate_interval) end |
Instance Method Details
#rate_limit(&block) ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 |
# File 'lib/rate_limited_jira/client/redis_based.rb', line 11 def rate_limit(&block) rate_limiter.exec_within_threshold(RATE_LIMITER_KEY, interval: rate_interval_in_seconds, threshold: rate_limit_per_interval) do response = block.call rate_limiter.add(RATE_LIMITER_KEY) response end end |
#rate_limiter ⇒ Object
23 24 25 |
# File 'lib/rate_limited_jira/client/redis_based.rb', line 23 def rate_limiter self.class.rate_limiter(RATE_LIMITER_KEY, rate_interval_in_seconds) end |