1
0
mirror of https://github.com/Radarr/Radarr.git synced 2024-11-04 10:02:40 +01:00

Fixed: Tweaked ratelimit logic for rarbg api.

This commit is contained in:
Taloth Saldono 2016-09-29 21:40:52 +02:00
parent e0d1e08f94
commit 7ef1ca8a00
2 changed files with 13 additions and 3 deletions

View File

@ -22,6 +22,7 @@ public class HttpRequestBuilder
public bool UseSimplifiedUserAgent { get; set; } public bool UseSimplifiedUserAgent { get; set; }
public bool AllowAutoRedirect { get; set; } public bool AllowAutoRedirect { get; set; }
public bool ConnectionKeepAlive { get; set; } public bool ConnectionKeepAlive { get; set; }
public TimeSpan RateLimit { get; set; }
public bool LogResponseContent { get; set; } public bool LogResponseContent { get; set; }
public NetworkCredential NetworkCredential { get; set; } public NetworkCredential NetworkCredential { get; set; }
public Dictionary<string, string> Cookies { get; private set; } public Dictionary<string, string> Cookies { get; private set; }
@ -75,7 +76,7 @@ public virtual HttpRequestBuilder Clone()
protected virtual HttpUri CreateUri() protected virtual HttpUri CreateUri()
{ {
var url = BaseUrl.CombinePath(ResourceUrl).AddQueryParams(QueryParams.Concat(SuffixQueryParams)); var url = BaseUrl.CombinePath(ResourceUrl).AddQueryParams(QueryParams.Concat(SuffixQueryParams));
if (Segments.Any()) if (Segments.Any())
{ {
var fullUri = url.FullUri; var fullUri = url.FullUri;
@ -103,6 +104,7 @@ protected virtual void Apply(HttpRequest request)
request.UseSimplifiedUserAgent = UseSimplifiedUserAgent; request.UseSimplifiedUserAgent = UseSimplifiedUserAgent;
request.AllowAutoRedirect = AllowAutoRedirect; request.AllowAutoRedirect = AllowAutoRedirect;
request.ConnectionKeepAlive = ConnectionKeepAlive; request.ConnectionKeepAlive = ConnectionKeepAlive;
request.RateLimit = RateLimit;
request.LogResponseContent = LogResponseContent; request.LogResponseContent = LogResponseContent;
if (NetworkCredential != null) if (NetworkCredential != null)
@ -245,6 +247,13 @@ public virtual HttpRequestBuilder KeepAlive(bool keepAlive = true)
return this; return this;
} }
public virtual HttpRequestBuilder WithRateLimit(double seconds)
{
RateLimit = TimeSpan.FromSeconds(seconds);
return this;
}
public virtual HttpRequestBuilder Post() public virtual HttpRequestBuilder Post()
{ {
Method = HttpMethod.POST; Method = HttpMethod.POST;
@ -371,4 +380,4 @@ public virtual HttpRequestBuilder AddFormUpload(string name, string fileName, by
} }
} }
} }

View File

@ -30,7 +30,8 @@ public string GetToken(RarbgSettings settings)
return _tokenCache.Get(settings.BaseUrl, () => return _tokenCache.Get(settings.BaseUrl, () =>
{ {
var requestBuilder = new HttpRequestBuilder(settings.BaseUrl.Trim('/')) var requestBuilder = new HttpRequestBuilder(settings.BaseUrl.Trim('/'))
.Resource("/pubapi_v2.php?get_token=get_token") .WithRateLimit(3.0)
.Resource("/pubapi_v2.php?get_token=get_token&app_id=Sonarr")
.Accept(HttpAccept.Json); .Accept(HttpAccept.Json);
if (settings.CaptchaToken.IsNotNullOrWhiteSpace()) if (settings.CaptchaToken.IsNotNullOrWhiteSpace())