Skip to content

Commit

Permalink
Use proxied requests for indexers
Browse files Browse the repository at this point in the history
  • Loading branch information
mynameisbogdan committed Mar 4, 2024
1 parent a25e790 commit 882152b
Show file tree
Hide file tree
Showing 7 changed files with 32 additions and 21 deletions.
9 changes: 6 additions & 3 deletions src/NzbDrone.Core/Indexers/Definitions/Anidub.cs
Expand Up @@ -18,6 +18,7 @@
using NzbDrone.Core.Messaging.Events;
using NzbDrone.Core.Parser;
using NzbDrone.Core.Parser.Model;
using NzbDrone.Core.ThingiProvider;

namespace NzbDrone.Core.Indexers.Definitions
{
Expand All @@ -43,7 +44,7 @@ public override IIndexerRequestGenerator GetRequestGenerator()

public override IParseIndexerResponse GetParser()
{
return new AnidubParser(Settings, Capabilities.Categories, RateLimit, _httpClient, _logger);
return new AnidubParser(Definition, Settings, Capabilities.Categories, RateLimit, _httpClient, _logger);
}

protected override async Task DoLogin()
Expand Down Expand Up @@ -244,6 +245,7 @@ public IndexerPageableRequestChain GetSearchRequests(BookSearchCriteria searchCr

public class AnidubParser : IParseIndexerResponse
{
private readonly ProviderDefinition _definition;
private readonly UserPassTorrentBaseSettings _settings;
private readonly IndexerCapabilitiesCategories _categories;
private readonly TimeSpan _rateLimit;
Expand All @@ -270,8 +272,9 @@ public class AnidubParser : IParseIndexerResponse
{ "/anons_ongoing", "12" }
};

public AnidubParser(UserPassTorrentBaseSettings settings, IndexerCapabilitiesCategories categories, TimeSpan rateLimit, IIndexerHttpClient httpClient, Logger logger)
public AnidubParser(ProviderDefinition definition, UserPassTorrentBaseSettings settings, IndexerCapabilitiesCategories categories, TimeSpan rateLimit, IIndexerHttpClient httpClient, Logger logger)
{
_definition = definition;
_settings = settings;
_categories = categories;
_rateLimit = rateLimit;
Expand Down Expand Up @@ -479,7 +482,7 @@ public IList<ReleaseInfo> ParseResponse(IndexerResponse indexerResponse)
.Build();

var releaseIndexerRequest = new IndexerRequest(releaseRequest);
var releaseResponse = new IndexerResponse(releaseIndexerRequest, _httpClient.Execute(releaseIndexerRequest.HttpRequest));
var releaseResponse = new IndexerResponse(releaseIndexerRequest, _httpClient.ExecuteProxied(releaseIndexerRequest.HttpRequest, _definition));

// Throw common http errors here before we try to parse
if (releaseResponse.HttpResponse.HasHttpError)
Expand Down
9 changes: 6 additions & 3 deletions src/NzbDrone.Core/Indexers/Definitions/Animedia.cs
Expand Up @@ -14,6 +14,7 @@
using NzbDrone.Core.Messaging.Events;
using NzbDrone.Core.Parser;
using NzbDrone.Core.Parser.Model;
using NzbDrone.Core.ThingiProvider;

namespace NzbDrone.Core.Indexers.Definitions
{
Expand All @@ -40,7 +41,7 @@ public override IIndexerRequestGenerator GetRequestGenerator()

public override IParseIndexerResponse GetParser()
{
return new AnimediaParser(Settings, Capabilities.Categories, RateLimit, _httpClient);
return new AnimediaParser(Definition, Settings, Capabilities.Categories, RateLimit, _httpClient);
}

private IndexerCapabilities SetCapabilities()
Expand Down Expand Up @@ -144,6 +145,7 @@ public IndexerPageableRequestChain GetSearchRequests(BookSearchCriteria searchCr

public class AnimediaParser : IParseIndexerResponse
{
private readonly ProviderDefinition _definition;
private readonly NoAuthTorrentBaseSettings _settings;
private readonly IndexerCapabilitiesCategories _categories;
private readonly TimeSpan _rateLimit;
Expand All @@ -157,8 +159,9 @@ public class AnimediaParser : IParseIndexerResponse
private static readonly Regex CategorieOVARegex = new Regex(@"ОВА|OVA|ОНА|ONA|Special", RegexOptions.Compiled | RegexOptions.IgnoreCase);
private static readonly Regex CategorieDoramaRegex = new Regex(@"Дорама", RegexOptions.Compiled | RegexOptions.IgnoreCase);

public AnimediaParser(NoAuthTorrentBaseSettings settings, IndexerCapabilitiesCategories categories, TimeSpan rateLimit, IIndexerHttpClient httpClient)
public AnimediaParser(ProviderDefinition definition, NoAuthTorrentBaseSettings settings, IndexerCapabilitiesCategories categories, TimeSpan rateLimit, IIndexerHttpClient httpClient)
{
_definition = definition;
_settings = settings;
_categories = categories;
_rateLimit = rateLimit;
Expand Down Expand Up @@ -311,7 +314,7 @@ public IList<ReleaseInfo> ParseResponse(IndexerResponse indexerResponse)
.Build();

var releaseIndexerRequest = new IndexerRequest(releaseRequest);
var releaseResponse = new IndexerResponse(releaseIndexerRequest, _httpClient.Execute(releaseIndexerRequest.HttpRequest));
var releaseResponse = new IndexerResponse(releaseIndexerRequest, _httpClient.ExecuteProxied(releaseIndexerRequest.HttpRequest, _definition));

// Throw common http errors here before we try to parse
if (releaseResponse.HttpResponse.HasHttpError)
Expand Down
2 changes: 1 addition & 1 deletion src/NzbDrone.Core/Indexers/Definitions/GazelleGames.cs
Expand Up @@ -205,7 +205,7 @@ private async Task FetchPasskey()
.AddQueryParam("request", "quick_user")
.Build();

var indexResponse = await _httpClient.ExecuteAsync(request).ConfigureAwait(false);
var indexResponse = await _httpClient.ExecuteProxiedAsync(request, Definition).ConfigureAwait(false);

var index = Json.Deserialize<GazelleGamesUserResponse>(indexResponse.Content);

Expand Down
9 changes: 6 additions & 3 deletions src/NzbDrone.Core/Indexers/Definitions/Shazbat.cs
Expand Up @@ -19,6 +19,7 @@
using NzbDrone.Core.Messaging.Events;
using NzbDrone.Core.Parser;
using NzbDrone.Core.Parser.Model;
using NzbDrone.Core.ThingiProvider;
using NzbDrone.Core.Validation;

namespace NzbDrone.Core.Indexers.Definitions;
Expand Down Expand Up @@ -50,7 +51,7 @@ public override IIndexerRequestGenerator GetRequestGenerator()

public override IParseIndexerResponse GetParser()
{
return new ShazbatParser(Settings, RateLimit, _httpClient, _logger);
return new ShazbatParser(Definition, Settings, RateLimit, _httpClient, _logger);
}

protected override async Task DoLogin()
Expand Down Expand Up @@ -202,6 +203,7 @@ private static string FixSearchTerm(string term)

public class ShazbatParser : IParseIndexerResponse
{
private readonly ProviderDefinition _definition;
private readonly ShazbatSettings _settings;
private readonly TimeSpan _rateLimit;
private readonly IIndexerHttpClient _httpClient;
Expand All @@ -210,8 +212,9 @@ public class ShazbatParser : IParseIndexerResponse
private readonly Regex _torrentInfoRegex = new (@"\((?<size>\d+)\):(?<seeders>\d+) \/ :(?<leechers>\d+)$", RegexOptions.Compiled);
private readonly HashSet<string> _hdResolutions = new () { "1080p", "1080i", "720p" };

public ShazbatParser(ShazbatSettings settings, TimeSpan rateLimit, IIndexerHttpClient httpClient, Logger logger)
public ShazbatParser(ProviderDefinition definition, ShazbatSettings settings, TimeSpan rateLimit, IIndexerHttpClient httpClient, Logger logger)
{
_definition = definition;
_settings = settings;
_rateLimit = rateLimit;
_httpClient = httpClient;
Expand Down Expand Up @@ -272,7 +275,7 @@ public IList<ReleaseInfo> ParseResponse(IndexerResponse indexerResponse)
_logger.Debug("Downloading Feed " + showRequest.ToString());

var releaseRequest = new IndexerRequest(showRequest);
var releaseResponse = new IndexerResponse(releaseRequest, _httpClient.Execute(releaseRequest.HttpRequest));
var releaseResponse = new IndexerResponse(releaseRequest, _httpClient.ExecuteProxied(releaseRequest.HttpRequest, _definition));

if (releaseResponse.HttpResponse.Content.ContainsIgnoreCase("sign in now"))
{
Expand Down
Expand Up @@ -32,7 +32,7 @@ public override IIndexerRequestGenerator GetRequestGenerator()

public override IParseIndexerResponse GetParser()
{
return _torrentRssParserFactory.GetParser(Settings);
return _torrentRssParserFactory.GetParser(Settings, Definition);
}

public override IEnumerable<ProviderDefinition> DefaultDefinitions
Expand Down
Expand Up @@ -3,12 +3,13 @@
using NzbDrone.Common.Cache;
using NzbDrone.Common.Serializer;
using NzbDrone.Core.Indexers.Exceptions;
using NzbDrone.Core.ThingiProvider;

namespace NzbDrone.Core.Indexers.Definitions.TorrentRss
{
public interface ITorrentRssParserFactory
{
TorrentRssParser GetParser(TorrentRssIndexerSettings settings);
TorrentRssParser GetParser(TorrentRssIndexerSettings settings, ProviderDefinition definition);
}

public class TorrentRssParserFactory : ITorrentRssParserFactory
Expand All @@ -26,10 +27,10 @@ public TorrentRssParserFactory(ICacheManager cacheManager, ITorrentRssSettingsDe
_logger = logger;
}

public TorrentRssParser GetParser(TorrentRssIndexerSettings indexerSettings)
public TorrentRssParser GetParser(TorrentRssIndexerSettings indexerSettings, ProviderDefinition definition)
{
var key = indexerSettings.ToJson();
var parserSettings = _settingsCache.Get(key, () => DetectParserSettings(indexerSettings), TimeSpan.FromDays(7));
var parserSettings = _settingsCache.Get(key, () => DetectParserSettings(indexerSettings, definition), TimeSpan.FromDays(7));

if (parserSettings.UseEZTVFormat)
{
Expand All @@ -51,9 +52,9 @@ public TorrentRssParser GetParser(TorrentRssIndexerSettings indexerSettings)
};
}

private TorrentRssIndexerParserSettings DetectParserSettings(TorrentRssIndexerSettings indexerSettings)
private TorrentRssIndexerParserSettings DetectParserSettings(TorrentRssIndexerSettings indexerSettings, ProviderDefinition definition)
{
var settings = _torrentRssSettingsDetector.Detect(indexerSettings);
var settings = _torrentRssSettingsDetector.Detect(indexerSettings, definition);

if (settings == null)
{
Expand Down
Expand Up @@ -9,28 +9,29 @@
using NzbDrone.Core.Indexers.Exceptions;
using NzbDrone.Core.IndexerSearch.Definitions;
using NzbDrone.Core.Parser.Model;
using NzbDrone.Core.ThingiProvider;

namespace NzbDrone.Core.Indexers.Definitions.TorrentRss
{
public interface ITorrentRssSettingsDetector
{
TorrentRssIndexerParserSettings Detect(TorrentRssIndexerSettings settings);
TorrentRssIndexerParserSettings Detect(TorrentRssIndexerSettings settings, ProviderDefinition definition);
}

public class TorrentRssSettingsDetector : ITorrentRssSettingsDetector
{
private const long ValidSizeThreshold = 2 * 1024 * 1024;

private readonly IHttpClient _httpClient;
private readonly IIndexerHttpClient _httpClient;
private readonly Logger _logger;

public TorrentRssSettingsDetector(IHttpClient httpClient, Logger logger)
public TorrentRssSettingsDetector(IIndexerHttpClient httpClient, Logger logger)
{
_httpClient = httpClient;
_logger = logger;
}

public TorrentRssIndexerParserSettings Detect(TorrentRssIndexerSettings settings)
public TorrentRssIndexerParserSettings Detect(TorrentRssIndexerSettings settings, ProviderDefinition definition)
{
_logger.Debug("Evaluating TorrentRss feed '{0}'", settings.BaseUrl);

Expand All @@ -43,7 +44,7 @@ public TorrentRssIndexerParserSettings Detect(TorrentRssIndexerSettings settings

try
{
httpResponse = _httpClient.Execute(request.HttpRequest);
httpResponse = _httpClient.ExecuteProxied(request.HttpRequest, definition);
}
catch (Exception ex)
{
Expand Down

0 comments on commit 882152b

Please sign in to comment.