New: Health events for Webhooks

This commit is contained in:
Mark McDowall 2020-10-09 07:38:05 -07:00
parent 43cb44dd38
commit ee32829cdb
7 changed files with 52 additions and 7 deletions

View File

@ -26,7 +26,7 @@ namespace NzbDrone.Core.Notifications.Webhook
var payload = new WebhookGrabPayload var payload = new WebhookGrabPayload
{ {
EventType = "Grab", EventType = WebhookEventType.Grab,
Series = new WebhookSeries(message.Series), Series = new WebhookSeries(message.Series),
Episodes = remoteEpisode.Episodes.ConvertAll(x => new WebhookEpisode(x)), Episodes = remoteEpisode.Episodes.ConvertAll(x => new WebhookEpisode(x)),
Release = new WebhookRelease(quality, remoteEpisode), Release = new WebhookRelease(quality, remoteEpisode),
@ -43,7 +43,7 @@ namespace NzbDrone.Core.Notifications.Webhook
var payload = new WebhookImportPayload var payload = new WebhookImportPayload
{ {
EventType = "Download", EventType = WebhookEventType.Download,
Series = new WebhookSeries(message.Series), Series = new WebhookSeries(message.Series),
Episodes = episodeFile.Episodes.Value.ConvertAll(x => new WebhookEpisode(x)), Episodes = episodeFile.Episodes.Value.ConvertAll(x => new WebhookEpisode(x)),
EpisodeFile = new WebhookEpisodeFile(episodeFile), EpisodeFile = new WebhookEpisodeFile(episodeFile),
@ -67,15 +67,29 @@ namespace NzbDrone.Core.Notifications.Webhook
public override void OnRename(Series series) public override void OnRename(Series series)
{ {
var payload = new WebhookPayload var payload = new WebhookRenamePayload
{ {
EventType = "Rename", EventType = WebhookEventType.Rename,
Series = new WebhookSeries(series) Series = new WebhookSeries(series)
}; };
_proxy.SendWebhook(payload, Settings); _proxy.SendWebhook(payload, Settings);
} }
public override void OnHealthIssue(HealthCheck.HealthCheck healthCheck)
{
var payload = new WebhookHealthPayload
{
EventType = WebhookEventType.Health,
Level = healthCheck.Type,
Message = healthCheck.Message,
Type = healthCheck.Source.Name,
WikiUrl = healthCheck.WikiUrl?.ToString()
};
_proxy.SendWebhook(payload, Settings);
}
public override string Name => "Webhook"; public override string Name => "Webhook";
public override ValidationResult Test() public override ValidationResult Test()
@ -93,7 +107,7 @@ namespace NzbDrone.Core.Notifications.Webhook
{ {
var payload = new WebhookGrabPayload var payload = new WebhookGrabPayload
{ {
EventType = "Test", EventType = WebhookEventType.Test,
Series = new WebhookSeries() Series = new WebhookSeries()
{ {
Id = 1, Id = 1,

View File

@ -0,0 +1,11 @@
namespace NzbDrone.Core.Notifications.Webhook
{
public enum WebhookEventType
{
Test,
Grab,
Download,
Rename,
Health
}
}

View File

@ -4,6 +4,7 @@ namespace NzbDrone.Core.Notifications.Webhook
{ {
public class WebhookGrabPayload : WebhookPayload public class WebhookGrabPayload : WebhookPayload
{ {
public WebhookSeries Series { get; set; }
public List<WebhookEpisode> Episodes { get; set; } public List<WebhookEpisode> Episodes { get; set; }
public WebhookRelease Release { get; set; } public WebhookRelease Release { get; set; }
public string DownloadClient { get; set; } public string DownloadClient { get; set; }

View File

@ -0,0 +1,12 @@
using NzbDrone.Core.HealthCheck;
namespace NzbDrone.Core.Notifications.Webhook
{
public class WebhookHealthPayload : WebhookPayload
{
public HealthCheckResult Level { get; set; }
public string Message { get; set; }
public string Type { get; set; }
public string WikiUrl { get; set; }
}
}

View File

@ -4,6 +4,7 @@ namespace NzbDrone.Core.Notifications.Webhook
{ {
public class WebhookImportPayload : WebhookPayload public class WebhookImportPayload : WebhookPayload
{ {
public WebhookSeries Series { get; set; }
public List<WebhookEpisode> Episodes { get; set; } public List<WebhookEpisode> Episodes { get; set; }
public WebhookEpisodeFile EpisodeFile { get; set; } public WebhookEpisodeFile EpisodeFile { get; set; }
public bool IsUpgrade { get; set; } public bool IsUpgrade { get; set; }

View File

@ -2,7 +2,6 @@
{ {
public class WebhookPayload public class WebhookPayload
{ {
public string EventType { get; set; } public WebhookEventType EventType { get; set; }
public WebhookSeries Series { get; set; }
} }
} }

View File

@ -0,0 +1,7 @@
namespace NzbDrone.Core.Notifications.Webhook
{
public class WebhookRenamePayload : WebhookPayload
{
public WebhookSeries Series { get; set; }
}
}