New: Added support for Gotify notifications (#730)

* Added support for Gotify notifications

* Removed non-supported features and adjusted priorities

* Use string interpolation to build url

* Rename a few variables and improve Url validation

* Improve building of the Url, move validation to Gotify.cs (adapting changes by markus101 over at Sonarr)

* Move validation from GotifyProxy.cs to here (adapting changes by markus101 over at Sonarr)
This commit is contained in:
stephanrenggli
2019-05-05 06:08:32 +02:00
committed by Qstick
parent e9dfdab907
commit bcdef2723f
6 changed files with 164 additions and 0 deletions
@@ -0,0 +1,67 @@
using System;
using System.Collections.Generic;
using FluentValidation.Results;
using NLog;
namespace NzbDrone.Core.Notifications.Gotify
{
public class Gotify : NotificationBase<GotifySettings>
{
private readonly IGotifyProxy _proxy;
private readonly Logger _logger;
public Gotify(IGotifyProxy proxy, Logger logger)
{
_proxy = proxy;
_logger = logger;
}
public override string Name => "Gotify";
public override string Link => "https://gotify.net/";
public override void OnGrab(GrabMessage grabMessage)
{
_proxy.SendNotification(ALBUM_GRABBED_TITLE, grabMessage.Message, Settings);
}
public override void OnReleaseImport(AlbumDownloadMessage message)
{
_proxy.SendNotification(ALBUM_DOWNLOADED_TITLE, message.Message, Settings);
}
public override void OnHealthIssue(HealthCheck.HealthCheck healthCheck)
{
_proxy.SendNotification(HEALTH_ISSUE_TITLE, healthCheck.Message, Settings);
}
public override void OnDownloadFailure(DownloadFailedMessage message)
{
_proxy.SendNotification(DOWNLOAD_FAILURE_TITLE, message.Message, Settings);
}
public override void OnImportFailure(AlbumDownloadMessage message)
{
_proxy.SendNotification(IMPORT_FAILURE_TITLE, message.Message, Settings);
}
public override ValidationResult Test()
{
var failures = new List<ValidationFailure>();
try
{
const string title = "Test Notification";
const string body = "This is a test message from Lidarr";
_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);
}
}
}