Class: Legion::Extensions::Github::Middleware::RateLimit
- Inherits:
-
Faraday::Middleware
- Object
- Faraday::Middleware
- Legion::Extensions::Github::Middleware::RateLimit
- Defined in:
- lib/legion/extensions/github/middleware/rate_limit.rb
Instance Method Summary collapse
-
#initialize(app, handler: nil) ⇒ RateLimit
constructor
A new instance of RateLimit.
- #on_complete(env) ⇒ Object
Constructor Details
#initialize(app, handler: nil) ⇒ RateLimit
Returns a new instance of RateLimit.
10 11 12 13 |
# File 'lib/legion/extensions/github/middleware/rate_limit.rb', line 10 def initialize(app, handler: nil) super(app) @handler = handler end |
Instance Method Details
#on_complete(env) ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/legion/extensions/github/middleware/rate_limit.rb', line 15 def on_complete(env) remaining = env.response_headers['x-ratelimit-remaining'] reset = env.response_headers['x-ratelimit-reset'] return unless remaining remaining_int = remaining.to_i return unless remaining_int.zero? || env.status == 429 return unless @handler.respond_to?(:on_rate_limit) reset_at = reset ? Time.at(reset.to_i) : Time.now + 60 @handler.on_rate_limit( remaining: remaining_int, reset_at: reset_at, status: env.status, url: env.url.to_s ) end |