using FluentValidation; using NzbDrone.Core.Annotations; using NzbDrone.Core.ThingiProvider; using NzbDrone.Core.Validation; namespace NzbDrone.Core.Applications.Radarr { public class RadarrSettingsValidator : AbstractValidator { public RadarrSettingsValidator() { RuleFor(c => c.BaseUrl).IsValidUrl(); RuleFor(c => c.ProwlarrUrl).IsValidUrl(); RuleFor(c => c.ApiKey).NotEmpty(); } } public class RadarrSettings : IProviderConfig { private static readonly RadarrSettingsValidator Validator = new RadarrSettingsValidator(); public RadarrSettings() { ProwlarrUrl = "http://localhost:9696"; BaseUrl = "http://localhost:7878"; } [FieldDefinition(0, Label = "Prowlarr Server", HelpText = "Prowlarr server URL as Radarr sees it, including http(s):// and port if needed")] public string ProwlarrUrl { get; set; } [FieldDefinition(1, Label = "Radarr Server", HelpText = "Radarr server URL, including http(s):// and port if needed")] public string BaseUrl { get; set; } [FieldDefinition(2, Label = "ApiKey", Privacy = PrivacyLevel.ApiKey, HelpText = "The ApiKey generated by Radarr in Settings/General")] public string ApiKey { get; set; } public NzbDroneValidationResult Validate() { return new NzbDroneValidationResult(Validator.Validate(this)); } } }