rarbg: implement retry strategy with 429 response (#14000)

This commit is contained in:
Bogdan
2023-02-19 13:26:49 +02:00
committed by GitHub
parent 3adf750973
commit 2321c14584
5 changed files with 98 additions and 59 deletions

View File

@@ -0,0 +1,27 @@
using System;
using Jackett.Common.Utils.Clients;
namespace Jackett.Common.Exceptions
{
public class TooManyRequestsException : Exception
{
public TimeSpan RetryAfter { get; private set; }
public TooManyRequestsException(string message, TimeSpan retryWait)
: base(message) => RetryAfter = retryWait;
public TooManyRequestsException(string message, WebResult response)
: base(message)
{
if (response.Headers.ContainsKey("Retry-After"))
{
var retryAfter = response.Headers["Retry-After"].ToString();
if (int.TryParse(retryAfter, out var seconds))
RetryAfter = TimeSpan.FromSeconds(seconds);
else if (DateTime.TryParse(retryAfter, out var date))
RetryAfter = date.ToUniversalTime() - DateTime.UtcNow;
}
}
}
}