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;
}
}
}