diff --git a/src/NzbDrone.Core/Indexers/Definitions/SceneHD.cs b/src/NzbDrone.Core/Indexers/Definitions/SceneHD.cs index e554c4d33..c3d24df2f 100644 --- a/src/NzbDrone.Core/Indexers/Definitions/SceneHD.cs +++ b/src/NzbDrone.Core/Indexers/Definitions/SceneHD.cs @@ -38,7 +38,7 @@ namespace NzbDrone.Core.Indexers.Definitions public override IIndexerRequestGenerator GetRequestGenerator() { - return new SceneHDRequestGenerator() { Settings = Settings, Capabilities = Capabilities }; + return new SceneHDRequestGenerator(Settings, Capabilities); } public override IParseIndexerResponse GetParser() @@ -88,38 +88,42 @@ namespace NzbDrone.Core.Indexers.Definitions public class SceneHDRequestGenerator : IIndexerRequestGenerator { - public SceneHDSettings Settings { get; set; } - public IndexerCapabilities Capabilities { get; set; } - public string BaseUrl { get; set; } + private readonly SceneHDSettings _settings; + private readonly IndexerCapabilities _capabilities; + + public SceneHDRequestGenerator(SceneHDSettings settings, IndexerCapabilities capabilities) + { + _settings = settings; + _capabilities = capabilities; + } private IEnumerable GetPagedRequests(string term, int[] categories, string imdbId = null) { var search = new[] { imdbId, term }; - var qc = new NameValueCollection + var parameters = new NameValueCollection { { "api", "" }, - { "passkey", Settings.Passkey }, + { "passkey", _settings.Passkey }, + { "search", string.Join(" ", search.Where(s => s.IsNotNullOrWhiteSpace())) }, { "search", string.Join(" ", search.Where(s => s.IsNotNullOrWhiteSpace())) } }; - foreach (var cat in Capabilities.Categories.MapTorznabCapsToTrackers(categories)) + if (categories?.Length > 0) { - qc.Add("categories[" + cat + "]", "1"); + parameters.Add("cat", _capabilities.Categories.MapTorznabCapsToTrackers(categories).Distinct().Join(",")); } - var searchUrl = string.Format("{0}/browse.php?{1}", Settings.BaseUrl.TrimEnd('/'), qc.GetQueryString()); - - var request = new IndexerRequest(searchUrl, HttpAccept.Json); + var searchUrl = $"{_settings.BaseUrl.TrimEnd('/')}/browse.php?{parameters.GetQueryString()}"; - yield return request; + yield return new IndexerRequest(searchUrl, HttpAccept.Json); } public IndexerPageableRequestChain GetSearchRequests(MovieSearchCriteria searchCriteria) { var pageableRequests = new IndexerPageableRequestChain(); - pageableRequests.Add(GetPagedRequests(string.Format("{0}", searchCriteria.SanitizedSearchTerm), searchCriteria.Categories, searchCriteria.FullImdbId)); + pageableRequests.Add(GetPagedRequests($"{searchCriteria.SanitizedSearchTerm}", searchCriteria.Categories, searchCriteria.FullImdbId)); return pageableRequests; } @@ -128,7 +132,7 @@ namespace NzbDrone.Core.Indexers.Definitions { var pageableRequests = new IndexerPageableRequestChain(); - pageableRequests.Add(GetPagedRequests(string.Format("{0}", searchCriteria.SanitizedSearchTerm), searchCriteria.Categories)); + pageableRequests.Add(GetPagedRequests($"{searchCriteria.SanitizedSearchTerm}", searchCriteria.Categories)); return pageableRequests; } @@ -137,7 +141,7 @@ namespace NzbDrone.Core.Indexers.Definitions { var pageableRequests = new IndexerPageableRequestChain(); - pageableRequests.Add(GetPagedRequests(string.Format("{0}", searchCriteria.SanitizedTvSearchString), searchCriteria.Categories, searchCriteria.FullImdbId)); + pageableRequests.Add(GetPagedRequests($"{searchCriteria.SanitizedTvSearchString}", searchCriteria.Categories, searchCriteria.FullImdbId)); return pageableRequests; } @@ -146,7 +150,7 @@ namespace NzbDrone.Core.Indexers.Definitions { var pageableRequests = new IndexerPageableRequestChain(); - pageableRequests.Add(GetPagedRequests(string.Format("{0}", searchCriteria.SanitizedSearchTerm), searchCriteria.Categories)); + pageableRequests.Add(GetPagedRequests($"{searchCriteria.SanitizedSearchTerm}", searchCriteria.Categories)); return pageableRequests; } @@ -155,7 +159,7 @@ namespace NzbDrone.Core.Indexers.Definitions { var pageableRequests = new IndexerPageableRequestChain(); - pageableRequests.Add(GetPagedRequests(string.Format("{0}", searchCriteria.SanitizedSearchTerm), searchCriteria.Categories)); + pageableRequests.Add(GetPagedRequests($"{searchCriteria.SanitizedSearchTerm}", searchCriteria.Categories)); return pageableRequests; }