Fixed: No longer possible to add protocol to a Host field (that's what Url fields are for)

This commit is contained in:
Taloth Saldono 2015-03-31 23:52:27 +02:00
parent f2ec02876b
commit b92cc6fb15
12 changed files with 19 additions and 13 deletions

View File

@ -10,7 +10,7 @@ namespace NzbDrone.Core.Download.Clients.Deluge
{ {
public DelugeSettingsValidator() public DelugeSettingsValidator()
{ {
RuleFor(c => c.Host).NotEmpty(); RuleFor(c => c.Host).ValidHost();
RuleFor(c => c.Port).GreaterThan(0); RuleFor(c => c.Port).GreaterThan(0);
RuleFor(c => c.TvCategory).Matches("^[-a-z]*$").WithMessage("Allowed characters a-z and -"); RuleFor(c => c.TvCategory).Matches("^[-a-z]*$").WithMessage("Allowed characters a-z and -");

View File

@ -10,7 +10,7 @@ namespace NzbDrone.Core.Download.Clients.Nzbget
{ {
public NzbgetSettingsValidator() public NzbgetSettingsValidator()
{ {
RuleFor(c => c.Host).NotEmpty(); RuleFor(c => c.Host).ValidHost();
RuleFor(c => c.Port).GreaterThan(0); RuleFor(c => c.Port).GreaterThan(0);
RuleFor(c => c.Username).NotEmpty().When(c => !String.IsNullOrWhiteSpace(c.Password)); RuleFor(c => c.Username).NotEmpty().When(c => !String.IsNullOrWhiteSpace(c.Password));
RuleFor(c => c.Password).NotEmpty().When(c => !String.IsNullOrWhiteSpace(c.Username)); RuleFor(c => c.Password).NotEmpty().When(c => !String.IsNullOrWhiteSpace(c.Username));

View File

@ -10,7 +10,7 @@ namespace NzbDrone.Core.Download.Clients.Sabnzbd
{ {
public SabnzbdSettingsValidator() public SabnzbdSettingsValidator()
{ {
RuleFor(c => c.Host).NotEmpty(); RuleFor(c => c.Host).ValidHost();
RuleFor(c => c.Port).GreaterThan(0); RuleFor(c => c.Port).GreaterThan(0);
RuleFor(c => c.ApiKey).NotEmpty() RuleFor(c => c.ApiKey).NotEmpty()

View File

@ -10,7 +10,7 @@ namespace NzbDrone.Core.Download.Clients.Transmission
{ {
public TransmissionSettingsValidator() public TransmissionSettingsValidator()
{ {
RuleFor(c => c.Host).NotEmpty(); RuleFor(c => c.Host).ValidHost();
RuleFor(c => c.Port).GreaterThan(0); RuleFor(c => c.Port).GreaterThan(0);
RuleFor(c => c.TvCategory).Matches(@"^\.?[-a-z]*$").WithMessage("Allowed characters a-z and -"); RuleFor(c => c.TvCategory).Matches(@"^\.?[-a-z]*$").WithMessage("Allowed characters a-z and -");

View File

@ -10,7 +10,7 @@ namespace NzbDrone.Core.Download.Clients.UTorrent
{ {
public UTorrentSettingsValidator() public UTorrentSettingsValidator()
{ {
RuleFor(c => c.Host).NotEmpty(); RuleFor(c => c.Host).ValidHost();
RuleFor(c => c.Port).InclusiveBetween(0, 65535); RuleFor(c => c.Port).InclusiveBetween(0, 65535);
RuleFor(c => c.TvCategory).NotEmpty(); RuleFor(c => c.TvCategory).NotEmpty();
} }

View File

@ -10,7 +10,7 @@ namespace NzbDrone.Core.Notifications.Growl
{ {
public GrowlSettingsValidator() public GrowlSettingsValidator()
{ {
RuleFor(c => c.Host).NotEmpty(); RuleFor(c => c.Host).ValidHost();
RuleFor(c => c.Port).GreaterThan(0); RuleFor(c => c.Port).GreaterThan(0);
} }
} }

View File

@ -11,7 +11,7 @@ namespace NzbDrone.Core.Notifications.MediaBrowser
{ {
public MediaBrowserSettingsValidator() public MediaBrowserSettingsValidator()
{ {
RuleFor(c => c.Host).NotEmpty(); RuleFor(c => c.Host).ValidHost();
RuleFor(c => c.ApiKey).NotEmpty(); RuleFor(c => c.ApiKey).NotEmpty();
} }
} }

View File

@ -10,7 +10,7 @@ namespace NzbDrone.Core.Notifications.Plex
{ {
public PlexClientSettingsValidator() public PlexClientSettingsValidator()
{ {
RuleFor(c => c.Host).NotEmpty(); RuleFor(c => c.Host).ValidHost();
RuleFor(c => c.Port).GreaterThan(0); RuleFor(c => c.Port).GreaterThan(0);
} }
} }

View File

@ -10,7 +10,7 @@ namespace NzbDrone.Core.Notifications.Plex
{ {
public PlexServerSettingsValidator() public PlexServerSettingsValidator()
{ {
RuleFor(c => c.Host).NotEmpty(); RuleFor(c => c.Host).ValidHost();
RuleFor(c => c.Port).GreaterThan(0); RuleFor(c => c.Port).GreaterThan(0);
} }
} }

View File

@ -113,7 +113,7 @@ namespace NzbDrone.Core.Notifications.Xbmc
if (version == new XbmcVersion(0)) if (version == new XbmcVersion(0))
{ {
throw new InvalidXbmcVersionException("Verion received from XBMC is invalid, please correct your settings."); throw new InvalidXbmcVersionException("Version received from XBMC is invalid, please correct your settings.");
} }
Notify(settings, "Test Notification", "Success! XBMC has been successfully configured!"); Notify(settings, "Test Notification", "Success! XBMC has been successfully configured!");

View File

@ -12,7 +12,7 @@ namespace NzbDrone.Core.Notifications.Xbmc
{ {
public XbmcSettingsValidator() public XbmcSettingsValidator()
{ {
RuleFor(c => c.Host).NotEmpty(); RuleFor(c => c.Host).ValidHost();
RuleFor(c => c.DisplayTime).GreaterThanOrEqualTo(2); RuleFor(c => c.DisplayTime).GreaterThanOrEqualTo(2);
} }
} }

View File

@ -19,13 +19,19 @@ namespace NzbDrone.Core.Validation
public static IRuleBuilderOptions<T, string> HaveHttpProtocol<T>(this IRuleBuilder<T, string> ruleBuilder) 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://"); return ruleBuilder.SetValidator(new RegularExpressionValidator("^https?://", RegexOptions.IgnoreCase)).WithMessage("must start with http:// or https://");
}
public static IRuleBuilderOptions<T, string> ValidHost<T>(this IRuleBuilder<T, string> ruleBuilder)
{
ruleBuilder.SetValidator(new NotEmptyValidator(null));
return ruleBuilder.SetValidator(new RegularExpressionValidator("^[-a-z0-9.]+$", RegexOptions.IgnoreCase)).WithMessage("must be valid Host without http://");
} }
public static IRuleBuilderOptions<T, string> ValidRootUrl<T>(this IRuleBuilder<T, string> ruleBuilder) public static IRuleBuilderOptions<T, string> ValidRootUrl<T>(this IRuleBuilder<T, string> ruleBuilder)
{ {
ruleBuilder.SetValidator(new NotEmptyValidator(null)); ruleBuilder.SetValidator(new NotEmptyValidator(null));
return ruleBuilder.SetValidator(new RegularExpressionValidator("^http(?:s)?://[a-z0-9-.]+", RegexOptions.IgnoreCase)).WithMessage("must be valid URL that"); return ruleBuilder.SetValidator(new RegularExpressionValidator("^https?://[-a-z0-9.]+", RegexOptions.IgnoreCase)).WithMessage("must be valid URL that starts with http(s)://");
} }
public static IRuleBuilderOptions<T, int> ValidPort<T>(this IRuleBuilder<T, int> ruleBuilder) public static IRuleBuilderOptions<T, int> ValidPort<T>(this IRuleBuilder<T, int> ruleBuilder)