Class: HasHelpers::ServiceTrust::RateLimiter
- Inherits:
-
Object
- Object
- HasHelpers::ServiceTrust::RateLimiter
- Defined in:
- lib/has_helpers/service_trust/rate_limiter.rb
Class Method Summary collapse
Class Method Details
.check!(issuer) ⇒ Object
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 |