From 197d53c3f8c20942f76f111cc7bf6aac04c0dad4 Mon Sep 17 00:00:00 2001 From: Vladimir Shushlin Date: Wed, 8 Dec 2021 18:50:25 +0300 Subject: refactor: abstract ratelimiter package We want to add domain-based ratelimiter. The logic will be identical, but we'll use host instead of IP address. --- app.go | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'app.go') diff --git a/app.go b/app.go index 508b11fa..6030cad8 100644 --- a/app.go +++ b/app.go @@ -260,15 +260,16 @@ func (a *theApp) buildHandlerPipeline() (http.Handler, error) { if a.config.RateLimit.SourceIPLimitPerSecond > 0 { rl := ratelimiter.New( - ratelimiter.WithSourceIPCacheMaxSize(ratelimiter.DefaultSourceIPCacheSize), - ratelimiter.WithSourceIPCachedEntriesMetric(metrics.RateLimitSourceIPCachedEntries), - ratelimiter.WithSourceIPCachedRequestsMetric(metrics.RateLimitSourceIPCacheRequests), + "source_ip", + ratelimiter.WithCacheMaxSize(ratelimiter.DefaultSourceIPCacheSize), + ratelimiter.WithCachedEntriesMetric(metrics.RateLimitSourceIPCachedEntries), + ratelimiter.WithCachedRequestsMetric(metrics.RateLimitSourceIPCacheRequests), ratelimiter.WithBlockedCountMetric(metrics.RateLimitSourceIPBlockedCount), - ratelimiter.WithSourceIPLimitPerSecond(a.config.RateLimit.SourceIPLimitPerSecond), - ratelimiter.WithSourceIPBurstSize(a.config.RateLimit.SourceIPBurst), + ratelimiter.WithLimitPerSecond(a.config.RateLimit.SourceIPLimitPerSecond), + ratelimiter.WithBurstSize(a.config.RateLimit.SourceIPBurst), ) - handler = rl.SourceIPLimiter(handler) + handler = rl.Middleware(handler) } // Health Check -- cgit v1.2.3