class Faraday::RateLimiter

Public Class Methods

new(app, options={}) click to toggle source
Calls superclass method
# File lib/faraday/rate_limiter.rb, line 3
def initialize(app, options={})
  super(app)
  @interval = options.fetch(:interval, 1)
  @last_request_time = nil
end

Public Instance Methods

call(env) click to toggle source
# 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