RiotSharp.RateLimitedRequester.HandleRateLimit C# (CSharp) Method

HandleRateLimit() private method

private HandleRateLimit ( Region region ) : void
region Region
return void
        private void HandleRateLimit(Region region)
        {
            if (firstRequestsInLastTenM.ContainsKey(region))
            {
                if (firstRequestsInLastTenM[region] == DateTime.MinValue)
                {
                    firstRequestsInLastTenM[region] = DateTime.Now;
                }
            }
            else
            {
                firstRequestsInLastTenM.Add(region, DateTime.MinValue);
            }
            if (numberOfRequestsInLastTenM.ContainsKey(region))
            {
                numberOfRequestsInLastTenM[region]++;
            }
            else
            {
                numberOfRequestsInLastTenM[region] = 1;
            }

            if (firstRequestsInLastTenS.ContainsKey(region))
            {
                if (firstRequestsInLastTenS[region] == DateTime.MinValue)
                {
                    firstRequestsInLastTenS[region] = DateTime.Now;
                }
            }
            else
            {
                firstRequestsInLastTenS.Add(region, DateTime.MinValue);
            }
            if (numberOfRequestsInLastTenS.ContainsKey(region))
            {
                numberOfRequestsInLastTenS[region]++;
            }
            else
            {
                numberOfRequestsInLastTenS.Add(region, 1);
            }

            if (numberOfRequestsInLastTenM[region] > RateLimitPer10M)
            {
                while ((DateTime.Now - firstRequestsInLastTenM[region]).TotalMinutes <= 11)
                {
                }
                numberOfRequestsInLastTenM[region] = 1;
                firstRequestsInLastTenM[region] = DateTime.Now;
            }
            if (numberOfRequestsInLastTenS[region] > RateLimitPer10S)
            {
                while ((DateTime.Now - firstRequestsInLastTenS[region]).TotalSeconds <= 11)
                {
                }
                numberOfRequestsInLastTenS[region] = 1;
                firstRequestsInLastTenS[region] = DateTime.Now;
            }

            if ((DateTime.Now - firstRequestsInLastTenM[region]).TotalMinutes > 10)
            {
                numberOfRequestsInLastTenM[region] = 1;
                firstRequestsInLastTenM[region] = DateTime.Now;
            }
            if ((DateTime.Now - firstRequestsInLastTenS[region]).TotalSeconds > 10)
            {
                numberOfRequestsInLastTenS[region] = 1;
                firstRequestsInLastTenS[region] = DateTime.Now;
            }
        }
    }