Class: Jira::Auto::Tool::RateLimitedJiraClient::RedisBased
- Inherits:
-
Jira::Auto::Tool::RateLimitedJiraClient
- Object
- JIRA::Client
- Jira::Auto::Tool::RateLimitedJiraClient
- Jira::Auto::Tool::RateLimitedJiraClient::RedisBased
- Defined in:
- lib/jira/auto/tool/rate_limited_jira_client/redis_based.rb
Constant Summary
Constants inherited from Jira::Auto::Tool::RateLimitedJiraClient
NO_RATE_INTERVAL_IN_SECONDS, NO_RATE_LIMIT_PER_INTERVAL
Instance Attribute Summary
Attributes inherited from Jira::Auto::Tool::RateLimitedJiraClient
#rate_interval_in_seconds, #rate_limit_per_interval
Class Method Summary collapse
Instance Method Summary collapse
Methods inherited from Jira::Auto::Tool::RateLimitedJiraClient
implementation_class_for, #initialize, #original_request, #request
Constructor Details
This class inherits a constructor from Jira::Auto::Tool::RateLimitedJiraClient
Class Method Details
.rate_limiter(rate_limiter_key, rate_interval) ⇒ Object
33 34 35 |
# File 'lib/jira/auto/tool/rate_limited_jira_client/redis_based.rb', line 33 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
14 15 16 17 18 19 20 21 22 23 |
# File 'lib/jira/auto/tool/rate_limited_jira_client/redis_based.rb', line 14 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
29 30 31 |
# File 'lib/jira/auto/tool/rate_limited_jira_client/redis_based.rb', line 29 def rate_limiter self.class.rate_limiter(rate_limiter_key, rate_interval_in_seconds) end |
#rate_limiter_key ⇒ Object
25 26 27 |
# File 'lib/jira/auto/tool/rate_limited_jira_client/redis_based.rb', line 25 def rate_limiter_key "jira_auto_tool_api_requests" end |