1using NzbDrone.Common.Extensions;
2using NzbDrone.Core.IndexerSearch.Definitions;
3using NzbDrone.Core.Parser.Model;
4
5namespace NzbDrone.Core.DecisionEngine.Specifications
6{
7 public class CustomFormatAllowedbyProfileSpecification : IDownloadDecisionEngineSpecification
8 {
9 public SpecificationPriority Priority => SpecificationPriority.Default;
10 public RejectionType Type => RejectionType.Permanent;
11
12 public virtual DownloadSpecDecision IsSatisfiedBy(RemoteEpisode subject, SearchCriteriaBase searchCriteria)
13 {
14 var minScore = subject.Series.QualityProfile.Value.MinFormatScore;
15 var score = subject.CustomFormatScore;
16
17 if (score < minScore)
18 {
19 return DownloadSpecDecision.Reject(DownloadRejectionReason.CustomFormatMinimumScore, "Custom Formats {0} have score {1} below Series profile minimum {2}", subject.CustomFormats.ConcatToString(), score, minScore);
20 }
21
22 return DownloadSpecDecision.Accept();
23 }
24 }
25}
26