Class: Legion::Extensions::Github::Middleware::RateLimit

Inherits:
Faraday::Middleware
  • Object
show all
Defined in:
lib/legion/extensions/github/middleware/rate_limit.rb

Instance Method Summary collapse

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