Class: Airtable::ORM::Http::RateLimiter

Inherits:
Faraday::Middleware
  • Object
show all
Defined in:
lib/airtable/orm/http/rate_limiter.rb

Instance Method Summary collapse

Constructor Details

#initialize(app, requests_per_second: nil, sleeper: nil) ⇒ RateLimiter

Returns a new instance of RateLimiter.



7
8
9
10
11
12
13
# File 'lib/airtable/orm/http/rate_limiter.rb', line 7

def initialize(app, requests_per_second: nil, sleeper: nil)
  super(app)
  @rps = requests_per_second
  @sleeper = sleeper || ->(seconds) { sleep(seconds) }
  @mutex = Mutex.new
  @requests = []
end

Instance Method Details

#call(env) ⇒ Object



15
16
17
18
# File 'lib/airtable/orm/http/rate_limiter.rb', line 15

def call(env)
  throttle if @rps
  @app.call(env)
end

#clearObject



20
21
22
# File 'lib/airtable/orm/http/rate_limiter.rb', line 20

def clear
  @mutex.synchronize { @requests = [] }
end