diff --git a/src/NzbDrone.Core/Indexers/Newznab/NewznabSettings.cs b/src/NzbDrone.Core/Indexers/Newznab/NewznabSettings.cs index f45baeb01..534ed366f 100644 --- a/src/NzbDrone.Core/Indexers/Newznab/NewznabSettings.cs +++ b/src/NzbDrone.Core/Indexers/Newznab/NewznabSettings.cs @@ -3,6 +3,7 @@ using System.Linq; using System.Text.RegularExpressions; using FluentValidation; +using FluentValidation.Results; using NzbDrone.Common.Extensions; using NzbDrone.Core.Annotations; using NzbDrone.Core.ThingiProvider; @@ -37,13 +38,20 @@ private static bool ShouldHaveApiKey(NewznabSettings settings) public NewznabSettingsValidator() { + Custom(newznab => + { + if (newznab.Categories.Empty() && newznab.AnimeCategories.Empty()) + { + return new ValidationFailure("", "Either 'Categories' or 'Anime Categories' must be provided"); + } + + return null; + }); + RuleFor(c => c.Url).ValidRootUrl(); RuleFor(c => c.ApiKey).NotEmpty().When(ShouldHaveApiKey); - RuleFor(c => c.Categories).NotEmpty().When(c => !c.AnimeCategories.Any()); - RuleFor(c => c.AnimeCategories).NotEmpty().When(c => !c.Categories.Any()); - RuleFor(c => c.AdditionalParameters) - .Matches(AdditionalParametersRegex) - .When(c => !c.AdditionalParameters.IsNullOrWhiteSpace()); + RuleFor(c => c.AdditionalParameters).Matches(AdditionalParametersRegex) + .When(c => !c.AdditionalParameters.IsNullOrWhiteSpace()); } } @@ -63,16 +71,13 @@ public NewznabSettings() [FieldDefinition(1, Label = "API Key")] public String ApiKey { get; set; } - [FieldDefinition(2, Label = "Categories", - HelpText = "Comma Separated list, leave blank to disable standard/daily shows", Advanced = true)] + [FieldDefinition(2, Label = "Categories", HelpText = "Comma Separated list, leave blank to disable standard/daily shows", Advanced = true)] public IEnumerable Categories { get; set; } - [FieldDefinition(3, Label = "Anime Categories", HelpText = "Comma Separated list, leave blank to disable anime", - Advanced = true)] + [FieldDefinition(3, Label = "Anime Categories", HelpText = "Comma Separated list, leave blank to disable anime", Advanced = true)] public IEnumerable AnimeCategories { get; set; } - [FieldDefinition(4, Label = "Additional Parameters", HelpText = "Additional newznab parameters", Advanced = true - )] + [FieldDefinition(4, Label = "Additional Parameters", HelpText = "Additional newznab parameters", Advanced = true)] public String AdditionalParameters { get; set; } public NzbDroneValidationResult Validate()