Rework the nexus api limit code a bit

This commit is contained in:
Timothy Baldridge 2020-05-14 05:53:51 -06:00
parent ff6743b468
commit 1212d35290
2 changed files with 14 additions and 2 deletions

View File

@ -153,6 +153,14 @@ namespace Wabbajack.Lib.NexusApi
return await Get<UserStatus>(url); return await Get<UserStatus>(url);
} }
public async Task<(int, int)> GetRemainingApiCalls()
{
var url = "https://api.nexusmods.com/v1/users/validate.json";
using var response = await HttpClient.GetAsync(url);
return (int.Parse(response.Headers.GetValues("X-RL-Daily-Remaining").First()),
int.Parse(response.Headers.GetValues("X-RL-Hourly-Remaining").First()));
}
#endregion #endregion
#region Rate Tracking #region Rate Tracking

View File

@ -26,12 +26,16 @@ namespace Wabbajack.Server.Services
public override async Task<int> Execute() public override async Task<int> Execute()
{ {
_nexusClient ??= await NexusApiClient.Get(); _nexusClient ??= await NexusApiClient.Get();
await _nexusClient.GetUserStatus();
int count = 0; int count = 0;
while (true) while (true)
{ {
bool ignoreNexus = _nexusClient.HourlyRemaining < 25; var (daily, hourly) = await _nexusClient.GetRemainingApiCalls();
bool ignoreNexus = hourly < 25;
if (ignoreNexus)
_logger.LogWarning($"Ignoring Nexus Downloads due to low hourly api limit (Daily: {_nexusClient.DailyRemaining}, Hourly:{_nexusClient.HourlyRemaining})");
else
_logger.LogInformation($"Looking for any download (Daily: {_nexusClient.DailyRemaining}, Hourly:{_nexusClient.HourlyRemaining})");
var nextDownload = await _sql.GetNextPendingDownload(ignoreNexus); var nextDownload = await _sql.GetNextPendingDownload(ignoreNexus);