Class: RateLimitedJira::Client::RedisBased

Inherits:
Client
  • Object
show all
Defined in:
lib/rate_limited_jira/client/redis_based.rb

Constant Summary collapse

RATE_LIMITER_KEY =
"rate_limited_jira_api_requests"

Class Method Summary collapse

Instance Method Summary collapse

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_limiterObject



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