Class: HasHelpers::ServiceTrust::RateLimiter

Inherits:
Object
  • Object
show all
Defined in:
lib/has_helpers/service_trust/rate_limiter.rb

Class Method Summary collapse

Class Method Details

.check!(issuer) ⇒ Object

Raises:



7
8
9
10
11
12
13
14
15
16
17
# File 'lib/has_helpers/service_trust/rate_limiter.rb', line 7

def check!(issuer)
  limit = HasHelpers::ServiceTrust.config.rate_limit_per_issuer
  requests = limit.fetch(:requests).to_i
  period = limit.fetch(:per).to_i
  key = "service_trust:rate:#{issuer}:#{Time.current.to_i / period}"
  count = redis.incr(key)
  redis.expire(key, period) if count == 1
  raise RateLimitedError, "issuer rate limit exceeded" if count > requests

  true
end