private static string GetClientId(HttpContext context, RateLimitConfig rateLimitConfig)
        {
            var clientId = DefaultClientId;

            if (context.Request.Headers.Keys.Contains(rateLimitConfig.ClientId))
            {
                clientId = context.Request.Headers[rateLimitConfig.ClientId].First();
            }
            return(clientId);
        }
        private static ClientRequestIdentity GetClientRequestIdentity(HttpContext context, RateLimitConfig rateLimitConfig)
        {
            var clientId   = GetClientId(context, rateLimitConfig);
            var path       = context.Request.Path.ToString().ToLowerInvariant();
            var httpMethod = context.Request.Method.ToLowerInvariant();
            var identity   = new ClientRequestIdentity(clientId, path, httpMethod);

            return(identity);
        }
 public RateLimitMiddleware(RequestDelegate nextStep, IHttpContextAccessor httpContextAccessor) : base(httpContextAccessor)
 {
     _nextStep         = nextStep;
     _rateLimitConfig  = GlobalConfig.RateLimit;
     _rateLimitHandler = new RateLimitHandler(_rateLimitConfig);
 }