using System; using System.Collections.Generic; using FluentValidation.Results; using NLog; namespace NzbDrone.Core.Notifications.SendGrid { public class SendGrid : NotificationBase { private readonly ISendGridProxy _proxy; private readonly Logger _logger; public SendGrid(ISendGridProxy proxy, Logger logger) { _proxy = proxy; _logger = logger; } public override string Name => "SendGrid"; public override string Link => "https://sendgrid.com/"; public override void OnHealthIssue(HealthCheck.HealthCheck healthCheck) { _proxy.SendNotification(HEALTH_ISSUE_TITLE, healthCheck.Message, Settings); } public override void OnApplicationUpdate(ApplicationUpdateMessage updateMessage) { _proxy.SendNotification(APPLICATION_UPDATE_TITLE, updateMessage.Message, Settings); } public override ValidationResult Test() { var failures = new List(); try { const string title = "Test Notification"; const string body = "This is a test message from Prowlarr"; _proxy.SendNotification(title, body, Settings); } catch (Exception ex) { _logger.Error(ex, "Unable to send test message"); failures.Add(new ValidationFailure("", "Unable to send test message")); } return new ValidationResult(failures); } } }