IRateLimiter.cs 380 B

1234567891011
  1. namespace Application.Abstractions.RateLimit;
  2. /// <summary>
  3. /// Sliding window rate limiter abstraction (구현은 Redis).
  4. /// </summary>
  5. public interface IRateLimiter
  6. {
  7. Task<RateLimitResult> CheckAsync(string key, int limit, TimeSpan window, CancellationToken ct = default);
  8. }
  9. public sealed record RateLimitResult(bool Allowed, int Limit, int Remaining, DateTime ResetAt);