public IpRateLimitMiddleware(RequestDelegate next,
                              IOptions <IpRateLimitOptions> options,
                              IRateLimitCounterStore counterStore,
                              IIpPolicyStore policyStore,
                              ILogger <IpRateLimitMiddleware> logger)
 {
     _next      = next;
     _options   = options.Value;
     _logger    = logger;
     _processor = new IpRateLimitProcessor(_options, counterStore, policyStore);
 }
        public IpRateLimitMiddleware(RequestDelegate next,
                                     IOptions <IpRateLimitOptions> options,
                                     IRateLimitCounterStore counterStore,
                                     IIpPolicyStore policyStore,
                                     ILogger <IpRateLimitMiddleware> logger,
                                     IIpAddressParser ipParser = null)
        {
            _next     = next;
            _options  = options.Value;
            _logger   = logger;
            _ipParser = ipParser ?? new ReversProxyIpParser(_options.RealIpHeader);

            _processor = new IpRateLimitProcessor(_options, counterStore, policyStore, _ipParser);
        }