Module: Labkit::RateLimit
- Defined in:
- lib/labkit/rate_limit.rb,
lib/labkit/rate_limit/rule.rb,
lib/labkit/rate_limit/evaluator.rb,
lib/labkit/rate_limit/identifier.rb
Overview
RateLimit provides a simple rules-based rate limiting API backed by Redis counters.
Defined Under Namespace
Classes: Evaluator, Identifier, Rule
Constant Summary collapse
- KNOWN_CHARACTERISTICS =
Defined independently to avoid forcing eager load of Evaluator at module load time. Must stay in sync with Evaluator::KNOWN_CHARACTERISTICS.
[:user, :ip, :namespace, :plan, :endpoint].freeze
Class Method Summary collapse
-
.check(call_site:, identifier:, rules:, redis:, logger: nil) ⇒ :allow, :block
Check whether the given call_site + identifier combination is within the configured rules.
Class Method Details
.check(call_site:, identifier:, rules:, redis:, logger: nil) ⇒ :allow, :block
Check whether the given call_site + identifier combination is within the configured rules.
23 24 25 26 27 28 29 30 31 32 |
# File 'lib/labkit/rate_limit.rb', line 23 def self.check(call_site:, identifier:, rules:, redis:, logger: nil) id = identifier.is_a?(Identifier) ? identifier : Identifier.new(identifier) Evaluator.new( call_site: call_site, identifier: id, rules: rules, redis: redis, logger: logger ).evaluate end |