diff --git a/src/NzbDrone.Core/ImportLists/Trakt/Popular/TraktPopularSettings.cs b/src/NzbDrone.Core/ImportLists/Trakt/Popular/TraktPopularSettings.cs index 4d2f03cdc..9aa312fd6 100644 --- a/src/NzbDrone.Core/ImportLists/Trakt/Popular/TraktPopularSettings.cs +++ b/src/NzbDrone.Core/ImportLists/Trakt/Popular/TraktPopularSettings.cs @@ -1,4 +1,6 @@ +using System.Text.RegularExpressions; using FluentValidation; +using NzbDrone.Common.Extensions; using NzbDrone.Core.Annotations; namespace NzbDrone.Core.ImportLists.Trakt.Popular @@ -9,6 +11,24 @@ public TraktPopularSettingsValidator() : base() { RuleFor(c => c.TraktListType).NotNull(); + + // Loose validation @TODO + RuleFor(c => c.Rating) + .Matches(@"^\d+\-\d+$", RegexOptions.IgnoreCase) + .When(c => c.Rating.IsNotNullOrWhiteSpace()) + .WithMessage("Not a valid rating"); + + // Any valid certification + RuleFor(c => c.Certification) + .Matches(@"^\bNR\b|\bG\b|\bPG\b|\bPG\-13\b|\bR\b|\bNC\-17\b$", RegexOptions.IgnoreCase) + .When(c => c.Certification.IsNotNullOrWhiteSpace()) + .WithMessage("Not a valid cerification"); + + // Loose validation @TODO + RuleFor(c => c.Years) + .Matches(@"^\d+(\-\d+)?$", RegexOptions.IgnoreCase) + .When(c => c.Years.IsNotNullOrWhiteSpace()) + .WithMessage("Not a valid year or range of years"); } } @@ -23,5 +43,17 @@ public TraktPopularSettings() [FieldDefinition(1, Label = "List Type", Type = FieldType.Select, SelectOptions = typeof(TraktPopularListType), HelpText = "Type of list you're seeking to import from")] public int TraktListType { get; set; } + + [FieldDefinition(2, Label = "Rating", HelpText = "Filter movies by rating range (0-100)")] + public string Rating { get; set; } + + [FieldDefinition(3, Label = "Certification", HelpText = "Filter movies by a certification (NR,G,PG,PG-13,R,NC-17), (Comma Separated)")] + public string Certification { get; set; } + + [FieldDefinition(4, Label = "Genres", HelpText = "Filter movies by Trakt Genre Slug (Comma Separated) Only for Popular Lists")] + public string Genres { get; set; } + + [FieldDefinition(5, Label = "Years", HelpText = "Filter movies by year or year range")] + public string Years { get; set; } } } diff --git a/src/NzbDrone.Core/ImportLists/Trakt/TraktSettingsBase.cs b/src/NzbDrone.Core/ImportLists/Trakt/TraktSettingsBase.cs index e58266912..613e805fe 100644 --- a/src/NzbDrone.Core/ImportLists/Trakt/TraktSettingsBase.cs +++ b/src/NzbDrone.Core/ImportLists/Trakt/TraktSettingsBase.cs @@ -1,5 +1,4 @@ using System; -using System.Text.RegularExpressions; using FluentValidation; using NzbDrone.Common.Extensions; using NzbDrone.Core.Annotations; @@ -29,24 +28,6 @@ public TraktSettingsBaseValidator() .WithMessage("Must authenticate with Trakt") .When(c => c.AccessToken.IsNotNullOrWhiteSpace() && c.RefreshToken.IsNotNullOrWhiteSpace()); - // Loose validation @TODO - RuleFor(c => c.Rating) - .Matches(@"^\d+\-\d+$", RegexOptions.IgnoreCase) - .When(c => c.Rating.IsNotNullOrWhiteSpace()) - .WithMessage("Not a valid rating"); - - // Any valid certification - RuleFor(c => c.Certification) - .Matches(@"^\bNR\b|\bG\b|\bPG\b|\bPG\-13\b|\bR\b|\bNC\-17\b$", RegexOptions.IgnoreCase) - .When(c => c.Certification.IsNotNullOrWhiteSpace()) - .WithMessage("Not a valid cerification"); - - // Loose validation @TODO - RuleFor(c => c.Years) - .Matches(@"^\d+(\-\d+)?$", RegexOptions.IgnoreCase) - .When(c => c.Years.IsNotNullOrWhiteSpace()) - .WithMessage("Not a valid year or range of years"); - // Limit not smaller than 1 and not larger than 100 RuleFor(c => c.Limit) .GreaterThan(0) @@ -62,10 +43,6 @@ public class TraktSettingsBase : IProviderConfig public TraktSettingsBase() { SignIn = "startOAuth"; - Rating = "0-100"; - Certification = "NR,G,PG,PG-13,R,NC-17"; - Genres = ""; - Years = ""; Limit = 100; } @@ -84,18 +61,6 @@ public TraktSettingsBase() [FieldDefinition(0, Label = "Auth User", Type = FieldType.Textbox, Hidden = HiddenType.Hidden)] public string AuthUser { get; set; } - [FieldDefinition(1, Label = "Rating", HelpText = "Filter movies by rating range (0-100)")] - public string Rating { get; set; } - - [FieldDefinition(2, Label = "Certification", HelpText = "Filter movies by a certification (NR,G,PG,PG-13,R,NC-17), (Comma Separated)")] - public string Certification { get; set; } - - [FieldDefinition(3, Label = "Genres", HelpText = "Filter movies by Trakt Genre Slug (Comma Separated) Only for Popular Lists")] - public string Genres { get; set; } - - [FieldDefinition(4, Label = "Years", HelpText = "Filter movies by year or year range")] - public string Years { get; set; } - [FieldDefinition(5, Label = "Limit", HelpText = "Limit the number of movies to get")] public int Limit { get; set; }