1 # frozen_string_literal: true
 
   4   def initialize(cache, interval, limit, max_burst)
 
   6     @requests_per_second = limit.to_f / interval
 
   7     @burst_limit = max_burst
 
  11     last_update, requests = @cache.get(key)
 
  14       elapsed = Time.now.to_i - last_update
 
  16       requests -= elapsed * @requests_per_second
 
  21     requests < @burst_limit
 
  27     last_update, requests = @cache.get(key)
 
  30       elapsed = now - last_update
 
  32       requests -= elapsed * @requests_per_second
 
  38     @cache.set(key, [now, [requests, 1.0].max])