Class: Faraday::RateLimiter

Inherits:
Middleware
  • Object
show all
Defined in:
lib/faraday/rate_limiter.rb

Instance Method Summary collapse

Constructor Details

#initialize(app, options = {}) ⇒ RateLimiter

Returns a new instance of RateLimiter.



3
4
5
6
7
# File 'lib/faraday/rate_limiter.rb', line 3

def initialize(app, options={})
  super(app)
  @interval = options.fetch(:interval, 1)
  @last_request_time = nil
end

Instance Method Details

#call(env) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/faraday/rate_limiter.rb', line 9

def call(env)

  if @last_request_time
    time_since_last_request = Time.now - @last_request_time
    if time_since_last_request < @interval
      sleep(@interval-time_since_last_request)
    end
  end

  @last_request_time = Time.now

  @app.call(env)
end