PluralKit/Myriad/Gateway/Limit/TwilightGatewayRatelimiter.cs

41 lines
1.0 KiB
C#
Raw Normal View History

2021-08-27 15:03:47 +00:00
using System;
using System.Net.Http;
2021-06-09 14:22:10 +00:00
using System.Threading.Tasks;
using Serilog;
namespace Myriad.Gateway.Limit
{
public class TwilightGatewayRatelimiter: IGatewayRatelimiter
{
private readonly string _url;
private readonly ILogger _logger;
private readonly HttpClient _httpClient = new()
{
Timeout = TimeSpan.FromSeconds(60)
};
2021-08-27 15:03:47 +00:00
2021-06-09 14:22:10 +00:00
public TwilightGatewayRatelimiter(ILogger logger, string url)
{
_url = url;
2021-06-10 12:21:05 +00:00
_logger = logger.ForContext<TwilightGatewayRatelimiter>();
2021-06-09 14:22:10 +00:00
}
public async Task Identify(int shard)
{
while (true)
{
try
{
_logger.Information("Shard {ShardId}: Requesting identify at gateway queue {GatewayQueueUrl}",
shard, _url);
await _httpClient.GetAsync(_url);
return;
}
catch (TimeoutException)
{
}
}
2021-06-09 14:22:10 +00:00
}
}
}