Class: Jira::Auto::Tool::RateLimitedJiraClient
- Inherits:
-
JIRA::Client
- Object
- JIRA::Client
- Jira::Auto::Tool::RateLimitedJiraClient
show all
- Defined in:
- lib/jira/auto/tool/rate_limited_jira_client.rb,
lib/jira/auto/tool/rate_limited_jira_client/redis_based.rb,
lib/jira/auto/tool/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: 1, rate_limit_per_interval: 1) ⇒ RateLimitedJiraClient
28
29
30
31
32
|
# File 'lib/jira/auto/tool/rate_limited_jira_client.rb', line 28
def initialize(options, rate_interval_in_seconds: 1, rate_limit_per_interval: 1)
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.
26
27
28
|
# File 'lib/jira/auto/tool/rate_limited_jira_client.rb', line 26
def rate_interval_in_seconds
@rate_interval_in_seconds
end
|
#rate_limit_per_interval ⇒ Object
Returns the value of attribute rate_limit_per_interval.
26
27
28
|
# File 'lib/jira/auto/tool/rate_limited_jira_client.rb', line 26
def rate_limit_per_interval
@rate_limit_per_interval
end
|
Class Method Details
.implementation_class_for(tool) ⇒ Object
10
11
12
13
14
15
16
17
18
19
20
21
|
# File 'lib/jira/auto/tool/rate_limited_jira_client.rb', line 10
def self.implementation_class_for(tool)
requested_implementation = tool.jat_rate_limit_implementation_when_defined_else nil
case requested_implementation
when "in_process", "", nil
InProcessBased
when "redis"
RedisBased
else
raise %(#{requested_implementation.inspect}: unexpected rate limiting implementation specified!")
end
end
|
Instance Method Details
#original_request ⇒ Object
34
|
# File 'lib/jira/auto/tool/rate_limited_jira_client.rb', line 34
alias original_request request
|
#rate_limit ⇒ Object
44
45
46
|
# File 'lib/jira/auto/tool/rate_limited_jira_client.rb', line 44
def rate_limit(&)
raise "rate_limit must be implemented by a subclass"
end
|
#request(*args) ⇒ Object
36
37
38
39
40
41
42
|
# File 'lib/jira/auto/tool/rate_limited_jira_client.rb', line 36
def request(*args)
if rate_limit_per_interval == NO_RATE_LIMIT_PER_INTERVAL
original_request(*args)
else
rate_limit { original_request(*args) }
end
end
|