Class: Jira::Auto::Tool::RateLimitedJiraClient
- 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
Direct Known Subclasses
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
-
#rate_interval_in_seconds ⇒ Object
readonly
Returns the value of attribute rate_interval_in_seconds.
-
#rate_limit_per_interval ⇒ Object
readonly
Returns the value of attribute rate_limit_per_interval.
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize(options, rate_interval_in_seconds: 1, rate_limit_per_interval: 1) ⇒ RateLimitedJiraClient
constructor
A new instance of RateLimitedJiraClient.
- #original_request ⇒ Object
- #rate_limit ⇒ Object
- #request ⇒ Object
Constructor Details
#initialize(options, rate_interval_in_seconds: 1, rate_limit_per_interval: 1) ⇒ RateLimitedJiraClient
Returns a new instance of RateLimitedJiraClient.
28 29 30 31 32 |
# File 'lib/jira/auto/tool/rate_limited_jira_client.rb', line 28 def initialize(, rate_interval_in_seconds: 1, rate_limit_per_interval: 1) super() @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 (readonly)
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 (readonly)
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 ⇒ Object
36 37 38 39 40 41 42 |
# File 'lib/jira/auto/tool/rate_limited_jira_client.rb', line 36 def request(*) if rate_limit_per_interval == NO_RATE_LIMIT_PER_INTERVAL original_request(*) else rate_limit { original_request(*) } end end |