using System; using System.Collections.Generic; using FluentValidation; using NzbDrone.Core.Annotations; using NzbDrone.Core.Validation; namespace NzbDrone.Core.Notifications.SendGrid { public class SendGridSettingsValidator : AbstractValidator { public SendGridSettingsValidator() { RuleFor(c => c.ApiKey).NotEmpty(); RuleFor(c => c.From).NotEmpty().EmailAddress(); RuleFor(c => c.Recipients).NotEmpty(); RuleForEach(c => c.Recipients).NotEmpty().EmailAddress(); } } public class SendGridSettings : NotificationSettingsBase { private static readonly SendGridSettingsValidator Validator = new (); public SendGridSettings() { BaseUrl = "https://api.sendgrid.com/v3/"; Recipients = Array.Empty(); } public string BaseUrl { get; set; } [FieldDefinition(1, Label = "ApiKey", Privacy = PrivacyLevel.ApiKey, HelpText = "NotificationsSendGridSettingsApiKeyHelpText", HelpLink = "https://sendgrid.com/docs/ui/account-and-settings/api-keys/#creating-an-api-key")] public string ApiKey { get; set; } [FieldDefinition(2, Label = "NotificationsEmailSettingsFromAddress")] public string From { get; set; } [FieldDefinition(3, Label = "NotificationsEmailSettingsRecipientAddress", Type = FieldType.Tag, Placeholder = "example@email.com,example1@email.com")] public IEnumerable Recipients { get; set; } public override NzbDroneValidationResult Validate() { return new NzbDroneValidationResult(Validator.Validate(this)); } } }