Support for Gazelle Indexers (RED, AR)

This commit is contained in:
Qstick
2021-02-14 00:47:21 -05:00
parent 0fb7168669
commit 30367b53fd
71 changed files with 1196 additions and 1933 deletions
@@ -15,6 +15,7 @@ namespace NzbDrone.Core.Indexers.Rarbg
private readonly IRarbgTokenProvider _tokenProvider;
public override string Name => "Rarbg";
public override string BaseUrl => "https://torrentapi.org";
public override DownloadProtocol Protocol => DownloadProtocol.Torrent;
@@ -50,7 +51,7 @@ namespace NzbDrone.Core.Indexers.Rarbg
public override IIndexerRequestGenerator GetRequestGenerator()
{
return new RarbgRequestGenerator(_tokenProvider) { Settings = Settings };
return new RarbgRequestGenerator(_tokenProvider) { Settings = Settings, BaseUrl = BaseUrl };
}
public override IParseIndexerResponse GetParser()
@@ -66,7 +67,7 @@ namespace NzbDrone.Core.Indexers.Rarbg
try
{
var request = new HttpRequestBuilder(Settings.BaseUrl.Trim('/'))
var request = new HttpRequestBuilder(BaseUrl.Trim('/'))
.Resource("/pubapi_v2.php?get_token=get_token")
.Accept(HttpAccept.Json)
.Build();
@@ -12,6 +12,7 @@ namespace NzbDrone.Core.Indexers.Rarbg
{
private readonly IRarbgTokenProvider _tokenProvider;
public string BaseUrl { get; set; }
public RarbgSettings Settings { get; set; }
public RarbgRequestGenerator(IRarbgTokenProvider tokenProvider)
@@ -28,7 +29,7 @@ namespace NzbDrone.Core.Indexers.Rarbg
private IEnumerable<IndexerRequest> GetMovieRequest(MovieSearchCriteria searchCriteria)
{
var requestBuilder = new HttpRequestBuilder(Settings.BaseUrl)
var requestBuilder = new HttpRequestBuilder(BaseUrl)
.Resource("/pubapi_v2.php")
.Accept(HttpAccept.Json);
@@ -62,7 +63,7 @@ namespace NzbDrone.Core.Indexers.Rarbg
requestBuilder.AddQueryParam("category", categoryParam);
requestBuilder.AddQueryParam("limit", "100");
requestBuilder.AddQueryParam("token", _tokenProvider.GetToken(Settings));
requestBuilder.AddQueryParam("token", _tokenProvider.GetToken(Settings, BaseUrl));
requestBuilder.AddQueryParam("format", "json_extended");
requestBuilder.AddQueryParam("app_id", BuildInfo.AppName);
@@ -3,6 +3,7 @@ using FluentValidation;
using NzbDrone.Core.Annotations;
using NzbDrone.Core.Languages;
using NzbDrone.Core.Parser.Model;
using NzbDrone.Core.ThingiProvider;
using NzbDrone.Core.Validation;
namespace NzbDrone.Core.Indexers.Rarbg
@@ -11,22 +12,18 @@ namespace NzbDrone.Core.Indexers.Rarbg
{
public RarbgSettingsValidator()
{
RuleFor(c => c.BaseUrl).ValidRootUrl();
}
}
public class RarbgSettings : IIndexerSettings
public class RarbgSettings : IProviderConfig
{
private static readonly RarbgSettingsValidator Validator = new RarbgSettingsValidator();
public RarbgSettings()
{
BaseUrl = "https://torrentapi.org";
RankedOnly = false;
}
public string BaseUrl { get; set; }
[FieldDefinition(1, Type = FieldType.Checkbox, Label = "Ranked Only", HelpText = "Only include ranked results.")]
public bool RankedOnly { get; set; }
@@ -9,7 +9,7 @@ namespace NzbDrone.Core.Indexers.Rarbg
{
public interface IRarbgTokenProvider
{
string GetToken(RarbgSettings settings);
string GetToken(RarbgSettings settings, string baseUrl);
}
public class RarbgTokenProvider : IRarbgTokenProvider
@@ -25,12 +25,12 @@ namespace NzbDrone.Core.Indexers.Rarbg
_logger = logger;
}
public string GetToken(RarbgSettings settings)
public string GetToken(RarbgSettings settings, string baseUrl)
{
return _tokenCache.Get(settings.BaseUrl,
return _tokenCache.Get(baseUrl,
() =>
{
var requestBuilder = new HttpRequestBuilder(settings.BaseUrl.Trim('/'))
var requestBuilder = new HttpRequestBuilder(baseUrl.Trim('/'))
.WithRateLimit(3.0)
.Resource("/pubapi_v2.php?get_token=get_token&app_id=Prowlarr")
.Accept(HttpAccept.Json);