@ -3,6 +3,7 @@ using System.Collections.Generic;
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 @@ namespace NzbDrone.Core.Indexers.Newznab
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 @@ namespace NzbDrone.Core.Indexers.Newznab
[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 < Int32 > 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 < Int32 > 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 ( )