Bit.Api.Middleware.CustomIpRateLimitMiddleware.LogBlockedRequest C# (CSharp) Method

LogBlockedRequest() public method

public LogBlockedRequest ( HttpContext httpContext, ClientRequestIdentity identity, RateLimitCounter counter, RateLimitRule rule ) : void
httpContext HttpContext
identity ClientRequestIdentity
counter RateLimitCounter
rule RateLimitRule
return void
        public override void LogBlockedRequest(HttpContext httpContext, ClientRequestIdentity identity,
            RateLimitCounter counter, RateLimitRule rule)
        {
            base.LogBlockedRequest(httpContext, identity, counter, rule);
            var key = $"blockedIp_{identity.ClientIp}";

            int blockedCount;
            _memoryCache.TryGetValue(key, out blockedCount);

            blockedCount++;
            if(blockedCount > 10)
            {
                _blockIpService.BlockIpAsync(identity.ClientIp, false);
                _logger.LogDebug("Blocked " + identity.ClientIp);
            }
            else
            {
                _memoryCache.Set(key, blockedCount,
                    new MemoryCacheEntryOptions().SetSlidingExpiration(new System.TimeSpan(0, 5, 0)));
            }
        }