You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
using System ;
using FluentValidation ;
using FluentValidation.Validators ;
namespace NzbDrone.Core.Organizer
{
public static class FileNameValidation
{
public static IRuleBuilderOptions < T , string > ValidEpisodeFormat < T > ( this IRuleBuilder < T , string > ruleBuilder )
{
ruleBuilder . SetValidator ( new NotEmptyValidator ( null ) ) ;
return ruleBuilder . SetValidator ( new RegularExpressionValidator ( FileNameBuilder . SeasonEpisodePatternRegex ) ) . WithMessage ( "Must contain season and episode numbers" ) ;
}
public static IRuleBuilderOptions < T , string > ValidDailyEpisodeFormat < T > ( this IRuleBuilder < T , string > ruleBuilder )
{
ruleBuilder . SetValidator ( new NotEmptyValidator ( null ) ) ;
return ruleBuilder . SetValidator ( new ValidDailyEpisodeFormatValidator ( ) ) ;
}
public static IRuleBuilderOptions < T , string > ValidSeriesFolderFormat < T > ( this IRuleBuilder < T , string > ruleBuilder )
{
ruleBuilder . SetValidator ( new NotEmptyValidator ( null ) ) ;
return ruleBuilder . SetValidator ( new RegularExpressionValidator ( FileNameBuilder . SeriesTitleRegex ) ) . WithMessage ( "Must contain series title" ) ;
}
}
public class ValidDailyEpisodeFormatValidator : PropertyValidator
{
public ValidDailyEpisodeFormatValidator ( )
: base ( "Must contain Air Date or Season and Episode" )
{
}
protected override bool IsValid ( PropertyValidatorContext context )
{
var value = context . PropertyValue as String ;
if ( ! FileNameBuilder . SeasonEpisodePatternRegex . IsMatch ( value ) & &
! FileNameBuilder . AirDateRegex . IsMatch ( value ) )
{
return false ;
}
return true ;
}
}
}