Пример #1
0
        public bool Verify(string token, DateTime requestDate, RateLimitSettingsConfig rateLimitSettingsConfig)
        {
            var clientRepository = new ClientRepository();
            var requestsPerTimeSpanRateLimiter         = new TokenBucketRateLimiter();
            var timeSpanPassedSinceLastCallRateLimiter = new TimespanPassedSinceLastCallRateLimiter();
            var rateLimiterAlgorithm = new RateLimiterAlgorithm(requestsPerTimeSpanRateLimiter, timeSpanPassedSinceLastCallRateLimiter);
            var rateLimiter          = new RateLimiter(clientRepository, rateLimiterAlgorithm);

            return(rateLimiter.Verify(token, requestDate, rateLimitSettingsConfig));
        }
        public void TimespanPassedSinceLastCall_Verify_True_WithinRatelimit()
        {
            var clientToken    = "abc123";
            var lastUpdateDate = new DateTime(2020, 1, 1, 0, 0, 0, 0);   // 1/1/2020 12:00:00AM
            var requestDate    = new DateTime(2020, 1, 1, 0, 0, 0, 500); // 1/1/2020 12:00:05AM

            var timespanPassedSinceLastCallRateLimiter = new TimespanPassedSinceLastCallRateLimiter();

            var isAllowed = timespanPassedSinceLastCallRateLimiter.VerifyTimespanPassedSinceLastCall(requestDate, new TimeSpan(0, 0, 1), lastUpdateDate);

            Assert.AreEqual(isAllowed, true);
        }