diff --git a/NzbDrone.Core.Test/IndexerSearchTests/SearchDefinitionFixture.cs b/NzbDrone.Core.Test/IndexerSearchTests/SearchDefinitionFixture.cs index b497ddf0e..a03d62210 100644 --- a/NzbDrone.Core.Test/IndexerSearchTests/SearchDefinitionFixture.cs +++ b/NzbDrone.Core.Test/IndexerSearchTests/SearchDefinitionFixture.cs @@ -4,7 +4,7 @@ namespace NzbDrone.Core.Test.IndexerSearchTests { - public class SearchDefinitionFixture : CoreTest + public class SearchDefinitionFixture : CoreTest { [TestCase("Betty White's Off Their Rockers", Result = "Betty+Whites+Off+Their+Rockers")] [TestCase("Star Wars: The Clone Wars", Result = "Star+Wars+The+Clone+Wars")] diff --git a/NzbDrone.Core/DecisionEngine/DownloadDecisionMaker.cs b/NzbDrone.Core/DecisionEngine/DownloadDecisionMaker.cs index 87bc97a33..1258ba27b 100644 --- a/NzbDrone.Core/DecisionEngine/DownloadDecisionMaker.cs +++ b/NzbDrone.Core/DecisionEngine/DownloadDecisionMaker.cs @@ -13,7 +13,7 @@ namespace NzbDrone.Core.DecisionEngine public interface IMakeDownloadDecision { List GetRssDecision(IEnumerable reports); - List GetSearchDecision(IEnumerable reports, SearchDefinitionBase searchDefinitionBase); + List GetSearchDecision(IEnumerable reports, SearchCriteriaBase searchCriteriaBase); } public class DownloadDecisionMaker : IMakeDownloadDecision @@ -34,12 +34,12 @@ public List GetRssDecision(IEnumerable reports) return GetDecisions(reports).ToList(); } - public List GetSearchDecision(IEnumerable reports, SearchDefinitionBase searchDefinitionBase) + public List GetSearchDecision(IEnumerable reports, SearchCriteriaBase searchCriteriaBase) { return GetDecisions(reports).ToList(); } - private IEnumerable GetDecisions(IEnumerable reports, SearchDefinitionBase searchDefinition = null) + private IEnumerable GetDecisions(IEnumerable reports, SearchCriteriaBase searchCriteria = null) { foreach (var report in reports) { @@ -56,7 +56,7 @@ private IEnumerable GetDecisions(IEnumerable repor if (remoteEpisode.Series != null) { - decision = GetDecisionForReport(remoteEpisode, searchDefinition); + decision = GetDecisionForReport(remoteEpisode, searchCriteria); } else { @@ -77,15 +77,15 @@ private IEnumerable GetDecisions(IEnumerable repor } - private DownloadDecision GetDecisionForReport(RemoteEpisode remoteEpisode, SearchDefinitionBase searchDefinition = null) + private DownloadDecision GetDecisionForReport(RemoteEpisode remoteEpisode, SearchCriteriaBase searchCriteria = null) { - var reasons = _specifications.Select(c => EvaluateSpec(c, remoteEpisode, searchDefinition)) + var reasons = _specifications.Select(c => EvaluateSpec(c, remoteEpisode, searchCriteria)) .Where(c => !string.IsNullOrWhiteSpace(c)); return new DownloadDecision(remoteEpisode, reasons.ToArray()); } - private string EvaluateSpec(IRejectWithReason spec, RemoteEpisode remoteEpisode, SearchDefinitionBase searchDefinitionBase = null) + private string EvaluateSpec(IRejectWithReason spec, RemoteEpisode remoteEpisode, SearchCriteriaBase searchCriteriaBase = null) { try { @@ -95,9 +95,9 @@ private string EvaluateSpec(IRejectWithReason spec, RemoteEpisode remoteEpisode, } var searchSpecification = spec as IDecisionEngineSearchSpecification; - if (searchSpecification != null && searchDefinitionBase != null) + if (searchSpecification != null && searchCriteriaBase != null) { - if (!searchSpecification.IsSatisfiedBy(remoteEpisode, searchDefinitionBase)) + if (!searchSpecification.IsSatisfiedBy(remoteEpisode, searchCriteriaBase)) { return spec.RejectionReason; } @@ -113,7 +113,7 @@ private string EvaluateSpec(IRejectWithReason spec, RemoteEpisode remoteEpisode, { e.Data.Add("report", remoteEpisode.Report.ToJson()); e.Data.Add("parsed", remoteEpisode.ParsedEpisodeInfo.ToJson()); - _logger.ErrorException("Couldn't evaluate decision", e); + _logger.ErrorException("Couldn't evaluate decision on " + remoteEpisode.Report.Title, e); return string.Format("{0}: {1}", spec.GetType().Name, e.Message); } diff --git a/NzbDrone.Core/DecisionEngine/Specifications/Search/DailyEpisodeMatchSpecification.cs b/NzbDrone.Core/DecisionEngine/Specifications/Search/DailyEpisodeMatchSpecification.cs index e47661a57..98291cddd 100644 --- a/NzbDrone.Core/DecisionEngine/Specifications/Search/DailyEpisodeMatchSpecification.cs +++ b/NzbDrone.Core/DecisionEngine/Specifications/Search/DailyEpisodeMatchSpecification.cs @@ -23,9 +23,9 @@ public string RejectionReason return "Episode doesn't match"; } } - public bool IsSatisfiedBy(RemoteEpisode remoteEpisode, SearchDefinitionBase searchDefinitionBase) + public bool IsSatisfiedBy(RemoteEpisode remoteEpisode, SearchCriteriaBase searchCriteriaBase) { - var dailySearchSpec = searchDefinitionBase as DailyEpisodeSearchDefinition; + var dailySearchSpec = searchCriteriaBase as DailyEpisodeSearchCriteria; if (dailySearchSpec == null) return true; diff --git a/NzbDrone.Core/DecisionEngine/Specifications/Search/IDecisionEngineSearchSpecification.cs b/NzbDrone.Core/DecisionEngine/Specifications/Search/IDecisionEngineSearchSpecification.cs index 11a3f317c..d1a235cea 100644 --- a/NzbDrone.Core/DecisionEngine/Specifications/Search/IDecisionEngineSearchSpecification.cs +++ b/NzbDrone.Core/DecisionEngine/Specifications/Search/IDecisionEngineSearchSpecification.cs @@ -8,6 +8,6 @@ namespace NzbDrone.Core.DecisionEngine.Specifications.Search { public interface IDecisionEngineSearchSpecification : IRejectWithReason { - bool IsSatisfiedBy(RemoteEpisode remoteEpisode, SearchDefinitionBase searchDefinitionBase); + bool IsSatisfiedBy(RemoteEpisode remoteEpisode, SearchCriteriaBase searchCriteriaBase); } } \ No newline at end of file diff --git a/NzbDrone.Core/DecisionEngine/Specifications/Search/SeasonMatchSpecification.cs b/NzbDrone.Core/DecisionEngine/Specifications/Search/SeasonMatchSpecification.cs index dffbb5f1f..8e2978ef6 100644 --- a/NzbDrone.Core/DecisionEngine/Specifications/Search/SeasonMatchSpecification.cs +++ b/NzbDrone.Core/DecisionEngine/Specifications/Search/SeasonMatchSpecification.cs @@ -21,9 +21,9 @@ public string RejectionReason } } - public bool IsSatisfiedBy(RemoteEpisode remoteEpisode, SearchDefinitionBase searchDefinitionBase) + public bool IsSatisfiedBy(RemoteEpisode remoteEpisode, SearchCriteriaBase searchCriteriaBase) { - var singleEpisodeSpec = searchDefinitionBase as SeasonSearchDefinition; + var singleEpisodeSpec = searchCriteriaBase as SeasonSearchCriteria; if (singleEpisodeSpec == null) return true; if (singleEpisodeSpec.SeasonNumber != remoteEpisode.ParsedEpisodeInfo.SeasonNumber) diff --git a/NzbDrone.Core/DecisionEngine/Specifications/Search/SingleEpisodeSearchMatchSpecification.cs b/NzbDrone.Core/DecisionEngine/Specifications/Search/SingleEpisodeSearchMatchSpecification.cs index 76ce2f852..815773c8c 100644 --- a/NzbDrone.Core/DecisionEngine/Specifications/Search/SingleEpisodeSearchMatchSpecification.cs +++ b/NzbDrone.Core/DecisionEngine/Specifications/Search/SingleEpisodeSearchMatchSpecification.cs @@ -22,9 +22,9 @@ public string RejectionReason } } - public bool IsSatisfiedBy(RemoteEpisode remoteEpisode, SearchDefinitionBase searchDefinitionBase) + public bool IsSatisfiedBy(RemoteEpisode remoteEpisode, SearchCriteriaBase searchCriteriaBase) { - var singleEpisodeSpec = searchDefinitionBase as SingleEpisodeSearchDefinition; + var singleEpisodeSpec = searchCriteriaBase as SingleEpisodeSearchCriteria; if (singleEpisodeSpec == null) return true; if (singleEpisodeSpec.SeasonNumber != remoteEpisode.ParsedEpisodeInfo.SeasonNumber) diff --git a/NzbDrone.Core/IndexerSearch/Definitions/DailyEpisodeSearchDefinition.cs b/NzbDrone.Core/IndexerSearch/Definitions/DailyEpisodeSearchCriteria.cs similarity index 78% rename from NzbDrone.Core/IndexerSearch/Definitions/DailyEpisodeSearchDefinition.cs rename to NzbDrone.Core/IndexerSearch/Definitions/DailyEpisodeSearchCriteria.cs index 6f7478b91..72d7fb195 100644 --- a/NzbDrone.Core/IndexerSearch/Definitions/DailyEpisodeSearchDefinition.cs +++ b/NzbDrone.Core/IndexerSearch/Definitions/DailyEpisodeSearchCriteria.cs @@ -2,7 +2,7 @@ namespace NzbDrone.Core.IndexerSearch.Definitions { - public class DailyEpisodeSearchDefinition : SearchDefinitionBase + public class DailyEpisodeSearchCriteria : SearchCriteriaBase { public DateTime Airtime { get; set; } diff --git a/NzbDrone.Core/IndexerSearch/Definitions/PartialSeasonSearchDefinition.cs b/NzbDrone.Core/IndexerSearch/Definitions/PartialSeasonSearchCriteria.cs similarity index 71% rename from NzbDrone.Core/IndexerSearch/Definitions/PartialSeasonSearchDefinition.cs rename to NzbDrone.Core/IndexerSearch/Definitions/PartialSeasonSearchCriteria.cs index e3ef7d0b7..37ba8c7ed 100644 --- a/NzbDrone.Core/IndexerSearch/Definitions/PartialSeasonSearchDefinition.cs +++ b/NzbDrone.Core/IndexerSearch/Definitions/PartialSeasonSearchCriteria.cs @@ -1,10 +1,10 @@ namespace NzbDrone.Core.IndexerSearch.Definitions { - public class PartialSeasonSearchDefinition : SeasonSearchDefinition + public class PartialSeasonSearchCriteria : SeasonSearchCriteria { public int Prefix { get; set; } - public PartialSeasonSearchDefinition(SeasonSearchDefinition seasonSearch, int prefix) + public PartialSeasonSearchCriteria(SeasonSearchCriteria seasonSearch, int prefix) { Prefix = prefix; SceneTitle = seasonSearch.SceneTitle; diff --git a/NzbDrone.Core/IndexerSearch/Definitions/SearchDefinitionBase.cs b/NzbDrone.Core/IndexerSearch/Definitions/SearchCriteriaBase.cs similarity index 95% rename from NzbDrone.Core/IndexerSearch/Definitions/SearchDefinitionBase.cs rename to NzbDrone.Core/IndexerSearch/Definitions/SearchCriteriaBase.cs index e3ac90147..1163efe9e 100644 --- a/NzbDrone.Core/IndexerSearch/Definitions/SearchDefinitionBase.cs +++ b/NzbDrone.Core/IndexerSearch/Definitions/SearchCriteriaBase.cs @@ -3,7 +3,7 @@ namespace NzbDrone.Core.IndexerSearch.Definitions { - public abstract class SearchDefinitionBase + public abstract class SearchCriteriaBase { private static readonly Regex NoneWord = new Regex(@"[\W]", RegexOptions.IgnoreCase | RegexOptions.Compiled); private static readonly Regex BeginningThe = new Regex(@"^the\s", RegexOptions.IgnoreCase | RegexOptions.Compiled); diff --git a/NzbDrone.Core/IndexerSearch/Definitions/SeasonSearchDefinition.cs b/NzbDrone.Core/IndexerSearch/Definitions/SeasonSearchCriteria.cs similarity index 80% rename from NzbDrone.Core/IndexerSearch/Definitions/SeasonSearchDefinition.cs rename to NzbDrone.Core/IndexerSearch/Definitions/SeasonSearchCriteria.cs index ec0031e94..b2868e6a1 100644 --- a/NzbDrone.Core/IndexerSearch/Definitions/SeasonSearchDefinition.cs +++ b/NzbDrone.Core/IndexerSearch/Definitions/SeasonSearchCriteria.cs @@ -1,6 +1,6 @@ namespace NzbDrone.Core.IndexerSearch.Definitions { - public class SeasonSearchDefinition : SearchDefinitionBase + public class SeasonSearchCriteria : SearchCriteriaBase { public int SeasonNumber { get; set; } diff --git a/NzbDrone.Core/IndexerSearch/Definitions/SingleEpisodeSearchDefinition.cs b/NzbDrone.Core/IndexerSearch/Definitions/SingleEpisodeSearchCriteria.cs similarity index 84% rename from NzbDrone.Core/IndexerSearch/Definitions/SingleEpisodeSearchDefinition.cs rename to NzbDrone.Core/IndexerSearch/Definitions/SingleEpisodeSearchCriteria.cs index 959a72814..717a4da3f 100644 --- a/NzbDrone.Core/IndexerSearch/Definitions/SingleEpisodeSearchDefinition.cs +++ b/NzbDrone.Core/IndexerSearch/Definitions/SingleEpisodeSearchCriteria.cs @@ -1,6 +1,6 @@ namespace NzbDrone.Core.IndexerSearch.Definitions { - public class SingleEpisodeSearchDefinition : SearchDefinitionBase + public class SingleEpisodeSearchCriteria : SearchCriteriaBase { //TODO make sure these are populated with scene if required public int EpisodeNumber { get; set; } diff --git a/NzbDrone.Core/IndexerSearch/NzbSearchService.cs b/NzbDrone.Core/IndexerSearch/NzbSearchService.cs index 8ea7cb727..3cdb8fb0c 100644 --- a/NzbDrone.Core/IndexerSearch/NzbSearchService.cs +++ b/NzbDrone.Core/IndexerSearch/NzbSearchService.cs @@ -42,7 +42,7 @@ public NzbSearchService(IIndexerService indexerService, IFetchFeedFromIndexers f public List SearchSingle(int seriesId, int seasonNumber, int episodeNumber) { - var searchSpec = Get(seriesId, seasonNumber); + var searchSpec = Get(seriesId, seasonNumber); if (_seriesService.GetSeries(seriesId).UseSceneNumbering) { @@ -61,7 +61,7 @@ public List SearchSingle(int seriesId, int seasonNumber, int e public List SearchDaily(int seriesId, DateTime airDate) { - var searchSpec = Get(seriesId); + var searchSpec = Get(seriesId); searchSpec.Airtime = airDate; return Dispatch(indexer => _feedFetcher.Fetch(indexer, searchSpec), searchSpec); @@ -69,19 +69,19 @@ public List SearchDaily(int seriesId, DateTime airDate) public List SearchSeason(int seriesId, int seasonNumber) { - var searchSpec = Get(seriesId, seasonNumber); + var searchSpec = Get(seriesId, seasonNumber); searchSpec.SeasonNumber = seasonNumber; return Dispatch(indexer => _feedFetcher.Fetch(indexer, searchSpec), searchSpec); } - private List PartialSeasonSearch(SeasonSearchDefinition search) + private List PartialSeasonSearch(SeasonSearchCriteria search) { var episodesNumbers = _episodeService.GetEpisodesBySeason(search.SeriesId, search.SeasonNumber).Select(c => c.EpisodeNumber); var prefixes = episodesNumbers .Select(i => i / 10) .Distinct() - .Select(prefix => new PartialSeasonSearchDefinition(search, prefix)); + .Select(prefix => new PartialSeasonSearchCriteria(search, prefix)); var result = new List(); @@ -95,7 +95,7 @@ private List PartialSeasonSearch(SeasonSearchDefinition search return result; } - private TSpec Get(int seriesId, int seasonNumber = -1) where TSpec : SearchDefinitionBase, new() + private TSpec Get(int seriesId, int seasonNumber = -1) where TSpec : SearchCriteriaBase, new() { var spec = new TSpec(); @@ -107,7 +107,7 @@ private List PartialSeasonSearch(SeasonSearchDefinition search return spec; } - private List Dispatch(Func> searchAction, SearchDefinitionBase definitionBase) + private List Dispatch(Func> searchAction, SearchCriteriaBase criteriaBase) { var indexers = _indexerService.GetAvailableIndexers().ToList(); var reports = new List(); @@ -133,16 +133,16 @@ private List Dispatch(Func> } catch (Exception e) { - _logger.ErrorException("Error while searching for " + definitionBase, e); + _logger.ErrorException("Error while searching for " + criteriaBase, e); } })); } Task.WaitAll(taskList.ToArray()); - _logger.Debug("Total of {0} reports were found for {1} in {2} indexers", reports.Count, definitionBase, indexers.Count); + _logger.Debug("Total of {0} reports were found for {1} in {2} indexers", reports.Count, criteriaBase, indexers.Count); - return _makeDownloadDecision.GetSearchDecision(reports, definitionBase).ToList(); + return _makeDownloadDecision.GetSearchDecision(reports, criteriaBase).ToList(); } } } \ No newline at end of file diff --git a/NzbDrone.Core/Indexers/IndexerFetchService.cs b/NzbDrone.Core/Indexers/IndexerFetchService.cs index a95d43a57..82fa37cc1 100644 --- a/NzbDrone.Core/Indexers/IndexerFetchService.cs +++ b/NzbDrone.Core/Indexers/IndexerFetchService.cs @@ -14,10 +14,10 @@ public interface IFetchFeedFromIndexers { IList FetchRss(IIndexer indexer); - IList Fetch(IIndexer indexer, SeasonSearchDefinition searchDefinition); - IList Fetch(IIndexer indexer, SingleEpisodeSearchDefinition searchDefinition); - IList Fetch(IIndexer indexer, PartialSeasonSearchDefinition searchDefinition); - IList Fetch(IIndexer indexer, DailyEpisodeSearchDefinition searchDefinition); + IList Fetch(IIndexer indexer, SeasonSearchCriteria searchCriteria); + IList Fetch(IIndexer indexer, SingleEpisodeSearchCriteria searchCriteria); + IList Fetch(IIndexer indexer, PartialSeasonSearchCriteria searchCriteria); + IList Fetch(IIndexer indexer, DailyEpisodeSearchCriteria searchCriteria); } public class FetchFeedService : IFetchFeedFromIndexers @@ -44,51 +44,51 @@ public virtual IList FetchRss(IIndexer indexer) return result; } - public IList Fetch(IIndexer indexer, SeasonSearchDefinition searchDefinition) + public IList Fetch(IIndexer indexer, SeasonSearchCriteria searchCriteria) { - _logger.Debug("Searching for {0}", searchDefinition); + _logger.Debug("Searching for {0}", searchCriteria); - var searchUrls = indexer.GetSeasonSearchUrls(searchDefinition.SceneTitle, searchDefinition.SeasonNumber); + var searchUrls = indexer.GetSeasonSearchUrls(searchCriteria.SceneTitle, searchCriteria.SeasonNumber); var result = Fetch(indexer, searchUrls); - _logger.Info("Finished searching {0} on {1}. Found {2}", indexer.Name, searchDefinition, result.Count); + _logger.Info("Finished searching {0} on {1}. Found {2}", indexer.Name, searchCriteria, result.Count); return result; } - public IList Fetch(IIndexer indexer, SingleEpisodeSearchDefinition searchDefinition) + public IList Fetch(IIndexer indexer, SingleEpisodeSearchCriteria searchCriteria) { - _logger.Debug("Searching for {0}", searchDefinition); + _logger.Debug("Searching for {0}", searchCriteria); - var searchUrls = indexer.GetEpisodeSearchUrls(searchDefinition.SceneTitle, searchDefinition.SeasonNumber, searchDefinition.EpisodeNumber); + var searchUrls = indexer.GetEpisodeSearchUrls(searchCriteria.SceneTitle, searchCriteria.SeasonNumber, searchCriteria.EpisodeNumber); var result = Fetch(indexer, searchUrls); - _logger.Info("Finished searching {0} on {1}. Found {2}", indexer.Name, searchDefinition, result.Count); + _logger.Info("Finished searching {0} on {1}. Found {2}", indexer.Name, searchCriteria, result.Count); return result; } - public IList Fetch(IIndexer indexer, PartialSeasonSearchDefinition searchDefinition) + public IList Fetch(IIndexer indexer, PartialSeasonSearchCriteria searchCriteria) { - _logger.Debug("Searching for {0}", searchDefinition); + _logger.Debug("Searching for {0}", searchCriteria); - var searchUrls = indexer.GetSeasonSearchUrls(searchDefinition.SceneTitle, searchDefinition.SeasonNumber); + var searchUrls = indexer.GetSeasonSearchUrls(searchCriteria.SceneTitle, searchCriteria.SeasonNumber); var result = Fetch(indexer, searchUrls); - _logger.Info("Finished searching {0} on {1}. Found {2}", indexer.Name, searchDefinition, result.Count); + _logger.Info("Finished searching {0} on {1}. Found {2}", indexer.Name, searchCriteria, result.Count); return result; } - public IList Fetch(IIndexer indexer, DailyEpisodeSearchDefinition searchDefinition) + public IList Fetch(IIndexer indexer, DailyEpisodeSearchCriteria searchCriteria) { - _logger.Debug("Searching for {0}", searchDefinition); + _logger.Debug("Searching for {0}", searchCriteria); - var searchUrls = indexer.GetDailyEpisodeSearchUrls(searchDefinition.SceneTitle, searchDefinition.Airtime); + var searchUrls = indexer.GetDailyEpisodeSearchUrls(searchCriteria.SceneTitle, searchCriteria.Airtime); var result = Fetch(indexer, searchUrls); - _logger.Info("Finished searching {0} on {1}. Found {2}", indexer.Name, searchDefinition, result.Count); + _logger.Info("Finished searching {0} on {1}. Found {2}", indexer.Name, searchCriteria, result.Count); return result; } diff --git a/NzbDrone.Core/NzbDrone.Core.csproj b/NzbDrone.Core/NzbDrone.Core.csproj index 54a5012ad..c1605b733 100644 --- a/NzbDrone.Core/NzbDrone.Core.csproj +++ b/NzbDrone.Core/NzbDrone.Core.csproj @@ -270,11 +270,11 @@ - - - - - + + + + +