Class: RobustServerSocket::RateLimiter
- Inherits:
-
Object
- Object
- RobustServerSocket::RateLimiter
- Defined in:
- lib/robust_server_socket/rate_limiter.rb
Constant Summary collapse
- RateLimitExceeded =
Class.new(StandardError)
Class Method Summary collapse
Class Method Details
.check(client_name) ⇒ Object
15 16 17 18 |
# File 'lib/robust_server_socket/rate_limiter.rb', line 15 def check(client_name) attempts = record_attempt(client_name) attempts <= max_requests end |
.check!(client_name) ⇒ Object
8 9 10 11 12 13 |
# File 'lib/robust_server_socket/rate_limiter.rb', line 8 def check!(client_name) return if check(client_name) raise RateLimitExceeded, "Rate limit exceeded for #{client_name}: max #{max_requests} per #{window_seconds}s" end |
.reset!(client_name) ⇒ Object
20 21 22 23 24 25 26 27 28 |
# File 'lib/robust_server_socket/rate_limiter.rb', line 20 def reset!(client_name) key = rate_limit_key(client_name) Cacher.with_redis do |conn| conn.del(key) end rescue Cacher::RedisConnectionError => e handle_redis_error(e, 'reset') nil end |