using System.Text.RegularExpressions; using FluentValidation; using FluentValidation.Validators; using NzbDrone.Core.Parser; namespace NzbDrone.Core.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 ValidRootUrl(this IRuleBuilder ruleBuilder) { ruleBuilder.SetValidator(new NotEmptyValidator(null)); return ruleBuilder.SetValidator(new RegularExpressionValidator("^http(?:s)?://[a-z0-9-.]+", RegexOptions.IgnoreCase)).WithMessage("must be valid URL that"); } public static IRuleBuilderOptions ValidPort(this IRuleBuilder ruleBuilder) { return ruleBuilder.SetValidator(new InclusiveBetweenValidator(1, 65535)); } public static IRuleBuilderOptions ValidLanguage(this IRuleBuilder ruleBuilder) { return ruleBuilder.SetValidator(new LangaugeValidator()); } } }