using System.Collections.Generic; using System.Text.RegularExpressions; using FluentValidation; using FluentValidation.Validators; using NzbDrone.Api.Qualities; namespace NzbDrone.Api.Validation { public static class RuleBuilderExtensions { public static IRuleBuilderOptions ValidId(this IRuleBuilder ruleBuilder) { return ruleBuilder.SetValidator(new GreaterThanValidator(0)); } public static IRuleBuilderOptions IsZero(this IRuleBuilder ruleBuilder) { return ruleBuilder.SetValidator(new EqualValidator(0)); } public static IRuleBuilderOptions HaveHttpProtocol(this IRuleBuilder ruleBuilder) { return ruleBuilder.SetValidator(new RegularExpressionValidator("^http(s)?://", RegexOptions.IgnoreCase)).WithMessage("must start with http:// or https://"); } public static IRuleBuilderOptions NotBlank(this IRuleBuilder ruleBuilder) { return ruleBuilder.SetValidator(new NotNullValidator()).SetValidator(new NotEmptyValidator("")); } public static IRuleBuilderOptions> EmptyCollection(this IRuleBuilder> ruleBuilder) { return ruleBuilder.SetValidator(new EmptyCollectionValidator()); } public static IRuleBuilderOptions IsValidRssSyncInterval(this IRuleBuilder ruleBuilder) { return ruleBuilder.SetValidator(new RssSyncIntervalValidator()); } public static IRuleBuilderOptions IsValidNetImportSyncInterval(this IRuleBuilder ruleBuilder) { return ruleBuilder.SetValidator(new NetImportSyncIntervalValidator()); } public static IRuleBuilderOptions> AreValidFormatTags( this IRuleBuilder> ruleBuilder) { return ruleBuilder.SetValidator(new FormatTagValidator()); } } }