Class: A2A::Server::Middleware::RedisStore
- Inherits:
-
Object
- Object
- A2A::Server::Middleware::RedisStore
- Defined in:
- lib/a2a/server/middleware/rate_limit_middleware.rb
Overview
Redis-backed storage for rate limiting
Instance Method Summary collapse
- #get(key) ⇒ Object
- #get_list(key) ⇒ Object
- #increment(key, expires_at: nil) ⇒ Object
-
#initialize(redis_client) ⇒ RedisStore
constructor
A new instance of RedisStore.
- #set(key, value, expires_at: nil) ⇒ Object
- #set_list(key, list, expires_at: nil) ⇒ Object
Constructor Details
#initialize(redis_client) ⇒ RedisStore
Returns a new instance of RedisStore.
339 340 341 |
# File 'lib/a2a/server/middleware/rate_limit_middleware.rb', line 339 def initialize(redis_client) @redis = redis_client end |
Instance Method Details
#get(key) ⇒ Object
343 344 345 346 347 348 |
# File 'lib/a2a/server/middleware/rate_limit_middleware.rb', line 343 def get(key) value = @redis.get(key) value ? JSON.parse(value) : nil rescue JSON::ParserError nil end |
#get_list(key) ⇒ Object
372 373 374 |
# File 'lib/a2a/server/middleware/rate_limit_middleware.rb', line 372 def get_list(key) get(key) end |
#increment(key, expires_at: nil) ⇒ Object
361 362 363 364 365 366 367 368 369 370 |
# File 'lib/a2a/server/middleware/rate_limit_middleware.rb', line 361 def increment(key, expires_at: nil) result = @redis.incr(key) if expires_at && result == 1 ttl = (expires_at - Time.now.to_f).ceil @redis.expire(key, ttl) if ttl.positive? end result end |
#set(key, value, expires_at: nil) ⇒ Object
350 351 352 353 354 355 356 357 358 359 |
# File 'lib/a2a/server/middleware/rate_limit_middleware.rb', line 350 def set(key, value, expires_at: nil) json_value = JSON.generate(value) if expires_at ttl = (expires_at - Time.now.to_f).ceil @redis.setex(key, ttl, json_value) if ttl.positive? else @redis.set(key, json_value) end end |
#set_list(key, list, expires_at: nil) ⇒ Object
376 377 378 |
# File 'lib/a2a/server/middleware/rate_limit_middleware.rb', line 376 def set_list(key, list, expires_at: nil) set(key, list, expires_at: expires_at) end |