mirror of
https://github.com/Jackett/Jackett.git
synced 2025-09-17 17:34:09 +02:00
rarbg: implement retry strategy with 429 response (#14000)
This commit is contained in:
27
src/Jackett.Common/Exceptions/TooManyRequestsException.cs
Normal file
27
src/Jackett.Common/Exceptions/TooManyRequestsException.cs
Normal 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user