Christian Nennemann
913f6faaf3
feat: add distributed rate limiting with sliding window algorithm
- RateLimiter trait with check_rate(key, config) -> RateResult
- InMemoryRateLimiter: DashMap-based sliding window log per key
- RateLimitConfig: configurable max_requests and window duration
- RateResult: allowed/remaining/retry_after_secs for Retry-After headers
- Lazy GC of expired entries (every 60s)
- Thread-safe concurrent access via DashMap
- 5 unit tests: limit enforcement, independent keys, remaining counter, concurrency
2026-03-04 20:35:45 +01:00
..
2026-03-03 23:19:11 +01:00
2026-03-04 20:20:55 +01:00
2026-03-04 20:12:20 +01:00
2026-03-04 07:52:12 +01:00
2026-03-03 23:19:11 +01:00
2026-03-01 20:11:51 +01:00
2026-03-04 14:13:58 +01:00
2026-03-04 07:52:12 +01:00
2026-03-04 14:13:58 +01:00
2026-03-04 07:52:12 +01:00
2026-03-04 20:12:20 +01:00
2026-03-04 20:33:26 +01:00
2026-03-04 20:20:55 +01:00
2026-03-04 20:35:45 +01:00