Class: RateLimitedJira::Client
- Inherits:
-
JIRA::Client
- Object
- JIRA::Client
- RateLimitedJira::Client
- 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
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: 0, rate_limit_per_interval: 0) ⇒ Client
constructor
A new instance of Client.
- #original_request ⇒ Object
- #rate_limit ⇒ Object
- #request ⇒ Object
Constructor Details
#initialize(options, rate_interval_in_seconds: 0, rate_limit_per_interval: 0) ⇒ Client
Returns a new instance of Client.
31 32 33 34 35 |
# File 'lib/rate_limited_jira/client.rb', line 31 def initialize(, rate_interval_in_seconds: 0, rate_limit_per_interval: 0) 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.
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 (readonly)
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(, rate_limit_per_interval: 0, rate_interval_in_seconds: 0, implementation: :in_process) implementation_class_for(implementation) .new(, 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 |