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])