2013-08-31 20:31:58 +00:00
using System ;
using System.Linq.Expressions ;
using System.Text.RegularExpressions ;
2013-08-22 08:08:43 +00:00
using FluentValidation ;
2013-04-20 22:14:41 +00:00
using FluentValidation.Validators ;
namespace NzbDrone.Api.Validation
{
public static class RuleBuilderExtensions
{
public static IRuleBuilderOptions < T , int > ValidId < T > ( this IRuleBuilder < T , int > ruleBuilder )
{
return ruleBuilder . SetValidator ( new GreaterThanValidator ( 0 ) ) ;
}
public static IRuleBuilderOptions < T , int > IsZero < T > ( this IRuleBuilder < T , int > ruleBuilder )
{
return ruleBuilder . SetValidator ( new EqualValidator ( 0 ) ) ;
}
2013-08-22 08:08:43 +00:00
public static IRuleBuilderOptions < T , string > HaveHttpProtocol < T > ( this IRuleBuilder < T , string > ruleBuilder )
{
return ruleBuilder . SetValidator ( new RegularExpressionValidator ( "^http(s)?://" , RegexOptions . IgnoreCase ) ) . WithMessage ( "must start with http:// or https://" ) ;
}
2013-08-31 20:31:58 +00:00
public static IRuleBuilderOptions < T , string > IsValidPath < T > ( this IRuleBuilder < T , string > ruleBuilder )
{
return ruleBuilder . SetValidator ( new PathValidator ( ) ) ;
}
2013-09-11 06:33:47 +00:00
public static IRuleBuilderOptions < T , string > NotBlank < T > ( this IRuleBuilder < T , string > ruleBuilder )
{
return ruleBuilder . SetValidator ( new NotNullValidator ( ) ) . SetValidator ( new NotEmptyValidator ( "" ) ) ;
}
2013-04-20 22:14:41 +00:00
}
}