Class: Jira::Auto::Tool::RateLimitedJiraClient::RedisBased

Inherits:
Jira::Auto::Tool::RateLimitedJiraClient show all
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_limiterObject



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_keyObject



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