private static int GetThrottleCount(IRateLimitingCacheProvider rateLimiter, RateLimitPolicy policy, int totalNumberOfCalls, int sleepTimeInMilliSeconds) { int throttleCount = 0; for (var i = 1; i <= totalNumberOfCalls; i++) { if (rateLimiter.LimitRequestAsync(policy.RequestKey, policy.HttpMethod, "TestRateLimiting.com", policy.RouteTemplate, policy.AllowedCallRates).Result.Throttled) { throttleCount++; } Thread.Sleep(sleepTimeInMilliSeconds); } return(throttleCount); }
public RateLimiter(IRateLimitingCacheProvider rateLimitingCacheProvider, IRateLimitingPolicyProvider policyProvider) { _rateLimitingCacheProvider = rateLimitingCacheProvider ?? throw new ArgumentNullException(nameof(rateLimitingCacheProvider)); _policyProvider = policyProvider; }