Class: RateLimitedJira::Client
- Inherits:
-
JIRA::Client
- Object
- JIRA::Client
- RateLimitedJira::Client
show all
- Defined in:
- lib/rate_limited_jira/client.rb,
lib/rate_limited_jira/client/redis_based.rb,
lib/rate_limited_jira/client/in_process_based.rb
Defined Under Namespace
Classes: InProcessBased, RedisBased
Constant Summary
collapse
- NO_RATE_LIMIT_PER_INTERVAL =
0
- NO_RATE_INTERVAL_IN_SECONDS =
0
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
#initialize(options, rate_interval_in_seconds: 0, rate_limit_per_interval: 0) ⇒ Client
31
32
33
34
35
|
# File 'lib/rate_limited_jira/client.rb', line 31
def initialize(options, rate_interval_in_seconds: 0, rate_limit_per_interval: 0)
super(options)
@rate_interval_in_seconds = rate_interval_in_seconds
@rate_limit_per_interval = rate_limit_per_interval
end
|
Instance Attribute Details
#rate_interval_in_seconds ⇒ Object
Returns the value of attribute rate_interval_in_seconds.
29
30
31
|
# File 'lib/rate_limited_jira/client.rb', line 29
def rate_interval_in_seconds
@rate_interval_in_seconds
end
|
#rate_limit_per_interval ⇒ Object
Returns the value of attribute rate_limit_per_interval.
29
30
31
|
# File 'lib/rate_limited_jira/client.rb', line 29
def rate_limit_per_interval
@rate_limit_per_interval
end
|
Class Method Details
.build(jira_options, rate_limit_per_interval: 0, rate_interval_in_seconds: 0, implementation: :in_process) ⇒ Object
10
11
12
13
14
15
|
# File 'lib/rate_limited_jira/client.rb', line 10
def self.build(jira_options, rate_limit_per_interval: 0, rate_interval_in_seconds: 0, implementation: :in_process)
implementation_class_for(implementation)
.new(jira_options,
rate_limit_per_interval: rate_limit_per_interval,
rate_interval_in_seconds: rate_interval_in_seconds)
end
|
Instance Method Details
#original_request ⇒ Object
37
|
# File 'lib/rate_limited_jira/client.rb', line 37
alias original_request request
|
#rate_limit ⇒ Object
47
48
49
|
# File 'lib/rate_limited_jira/client.rb', line 47
def rate_limit(&)
raise NotImplementedError, "rate_limit must be implemented by a subclass"
end
|
#request ⇒ Object
39
40
41
42
43
44
45
|
# File 'lib/rate_limited_jira/client.rb', line 39
def request(*)
if rate_limit_per_interval == NO_RATE_LIMIT_PER_INTERVAL
original_request(*)
else
rate_limit { original_request(*) }
end
end
|