From a753f721d1107b020661b6e2a9da827943423015 Mon Sep 17 00:00:00 2001 From: Devin Buhl Date: Sun, 6 Nov 2022 11:21:28 -0500 Subject: [PATCH] New: Send additional information with Webhook and Custom Scripts (cherry picked from commit e5d6e569cf05cbe431e7ffa98569017d5243d848) --- .../Notifications/CustomScript/CustomScript.cs | 17 ++++++++++++++++- .../Notifications/Notifiarr/Notifiarr.cs | 4 ++-- .../Notifications/Webhook/Webhook.cs | 4 ++-- .../Notifications/Webhook/WebhookBase.cs | 11 ++++++++--- .../Notifications/Webhook/WebhookPayload.cs | 1 + 5 files changed, 29 insertions(+), 8 deletions(-) diff --git a/src/NzbDrone.Core/Notifications/CustomScript/CustomScript.cs b/src/NzbDrone.Core/Notifications/CustomScript/CustomScript.cs index f7d728ca3..13dfa8478 100755 --- a/src/NzbDrone.Core/Notifications/CustomScript/CustomScript.cs +++ b/src/NzbDrone.Core/Notifications/CustomScript/CustomScript.cs @@ -6,6 +6,7 @@ using NzbDrone.Common.Disk; using NzbDrone.Common.Extensions; using NzbDrone.Common.Processes; +using NzbDrone.Core.Configuration; using NzbDrone.Core.HealthCheck; using NzbDrone.Core.ThingiProvider; using NzbDrone.Core.Validation; @@ -14,12 +15,20 @@ namespace NzbDrone.Core.Notifications.CustomScript { public class CustomScript : NotificationBase { + private readonly IConfigFileProvider _configFileProvider; + private readonly IConfigService _configService; private readonly IDiskProvider _diskProvider; private readonly IProcessProvider _processProvider; private readonly Logger _logger; - public CustomScript(IDiskProvider diskProvider, IProcessProvider processProvider, Logger logger) + public CustomScript(IConfigFileProvider configFileProvider, + IConfigService configService, + IDiskProvider diskProvider, + IProcessProvider processProvider, + Logger logger) { + _configFileProvider = configFileProvider; + _configService = configService; _diskProvider = diskProvider; _processProvider = processProvider; _logger = logger; @@ -36,6 +45,8 @@ public override void OnHealthIssue(HealthCheck.HealthCheck healthCheck) var environmentVariables = new StringDictionary(); environmentVariables.Add("Prowlarr_EventType", "HealthIssue"); + environmentVariables.Add("Prowlarr_InstanceName", _configFileProvider.InstanceName); + environmentVariables.Add("Prowlarr_ApplicationUrl", _configService.ApplicationUrl); environmentVariables.Add("Prowlarr_Health_Issue_Level", Enum.GetName(typeof(HealthCheckResult), healthCheck.Type)); environmentVariables.Add("Prowlarr_Health_Issue_Message", healthCheck.Message); environmentVariables.Add("Prowlarr_Health_Issue_Type", healthCheck.Source.Name); @@ -49,6 +60,8 @@ public override void OnApplicationUpdate(ApplicationUpdateMessage updateMessage) var environmentVariables = new StringDictionary(); environmentVariables.Add("Prowlarr_EventType", "ApplicationUpdate"); + environmentVariables.Add("Prowlarr_InstanceName", _configFileProvider.InstanceName); + environmentVariables.Add("Prowlarr_ApplicationUrl", _configService.ApplicationUrl); environmentVariables.Add("Prowlarr_Update_Message", updateMessage.Message); environmentVariables.Add("Prowlarr_Update_NewVersion", updateMessage.NewVersion.ToString()); environmentVariables.Add("Prowlarr_Update_PreviousVersion", updateMessage.PreviousVersion.ToString()); @@ -79,6 +92,8 @@ public override ValidationResult Test() { var environmentVariables = new StringDictionary(); environmentVariables.Add("Prowlarr_EventType", "Test"); + environmentVariables.Add("Prowlarr_InstanceName", _configFileProvider.InstanceName); + environmentVariables.Add("Prowlarr_ApplicationUrl", _configService.ApplicationUrl); var processOutput = ExecuteScript(environmentVariables); diff --git a/src/NzbDrone.Core/Notifications/Notifiarr/Notifiarr.cs b/src/NzbDrone.Core/Notifications/Notifiarr/Notifiarr.cs index b12bd4c7d..ba6f3996b 100644 --- a/src/NzbDrone.Core/Notifications/Notifiarr/Notifiarr.cs +++ b/src/NzbDrone.Core/Notifications/Notifiarr/Notifiarr.cs @@ -11,8 +11,8 @@ public class Notifiarr : WebhookBase { private readonly INotifiarrProxy _proxy; - public Notifiarr(INotifiarrProxy proxy, IConfigFileProvider configFileProvider) - : base(configFileProvider) + public Notifiarr(INotifiarrProxy proxy, IConfigFileProvider configFileProvider, IConfigService configService) + : base(configFileProvider, configService) { _proxy = proxy; } diff --git a/src/NzbDrone.Core/Notifications/Webhook/Webhook.cs b/src/NzbDrone.Core/Notifications/Webhook/Webhook.cs index c22b121ca..c85d9d74d 100755 --- a/src/NzbDrone.Core/Notifications/Webhook/Webhook.cs +++ b/src/NzbDrone.Core/Notifications/Webhook/Webhook.cs @@ -10,8 +10,8 @@ public class Webhook : WebhookBase { private readonly IWebhookProxy _proxy; - public Webhook(IWebhookProxy proxy, IConfigFileProvider configFileProvider) - : base(configFileProvider) + public Webhook(IWebhookProxy proxy, IConfigFileProvider configFileProvider, IConfigService configService) + : base(configFileProvider, configService) { _proxy = proxy; } diff --git a/src/NzbDrone.Core/Notifications/Webhook/WebhookBase.cs b/src/NzbDrone.Core/Notifications/Webhook/WebhookBase.cs index 06a3f61cd..9fc0341df 100644 --- a/src/NzbDrone.Core/Notifications/Webhook/WebhookBase.cs +++ b/src/NzbDrone.Core/Notifications/Webhook/WebhookBase.cs @@ -7,11 +7,12 @@ public abstract class WebhookBase : NotificationBase where TSettings : IProviderConfig, new() { private readonly IConfigFileProvider _configFileProvider; + private readonly IConfigService _configService; - protected WebhookBase(IConfigFileProvider configFileProvider) - : base() + protected WebhookBase(IConfigFileProvider configFileProvider, IConfigService configService) { _configFileProvider = configFileProvider; + _configService = configService; } public WebhookGrabPayload BuildGrabPayload(GrabMessage message) @@ -20,6 +21,7 @@ public WebhookGrabPayload BuildGrabPayload(GrabMessage message) { EventType = WebhookEventType.Grab, InstanceName = _configFileProvider.InstanceName, + ApplicationUrl = _configService.ApplicationUrl, Release = new WebhookRelease(message.Release), Trigger = message.GrabTrigger, Source = message.Source, @@ -36,6 +38,7 @@ protected WebhookHealthPayload BuildHealthPayload(HealthCheck.HealthCheck health { EventType = WebhookEventType.Health, InstanceName = _configFileProvider.InstanceName, + ApplicationUrl = _configService.ApplicationUrl, Level = healthCheck.Type, Message = healthCheck.Message, Type = healthCheck.Source.Name, @@ -49,6 +52,7 @@ protected WebhookApplicationUpdatePayload BuildApplicationUploadPayload(Applicat { EventType = WebhookEventType.ApplicationUpdate, InstanceName = _configFileProvider.InstanceName, + ApplicationUrl = _configService.ApplicationUrl, Message = updateMessage.Message, PreviousVersion = updateMessage.PreviousVersion.ToString(), NewVersion = updateMessage.NewVersion.ToString() @@ -60,7 +64,8 @@ protected WebhookPayload BuildTestPayload() return new WebhookPayload { EventType = WebhookEventType.Test, - InstanceName = _configFileProvider.InstanceName + InstanceName = _configFileProvider.InstanceName, + ApplicationUrl = _configService.ApplicationUrl, }; } } diff --git a/src/NzbDrone.Core/Notifications/Webhook/WebhookPayload.cs b/src/NzbDrone.Core/Notifications/Webhook/WebhookPayload.cs index 05d51c7c1..536de2a7b 100755 --- a/src/NzbDrone.Core/Notifications/Webhook/WebhookPayload.cs +++ b/src/NzbDrone.Core/Notifications/Webhook/WebhookPayload.cs @@ -4,5 +4,6 @@ public class WebhookPayload { public WebhookEventType EventType { get; set; } public string InstanceName { get; set; } + public string ApplicationUrl { get; set; } } }