diff --git a/src/NzbDrone.Core/Notifications/Webhook/WebhookBase.cs b/src/NzbDrone.Core/Notifications/Webhook/WebhookBase.cs index 041da35257..7288997cc2 100644 --- a/src/NzbDrone.Core/Notifications/Webhook/WebhookBase.cs +++ b/src/NzbDrone.Core/Notifications/Webhook/WebhookBase.cs @@ -64,7 +64,7 @@ protected WebhookImportPayload BuildOnDownloadPayload(DownloadMessage message) { SourcePath = message.SourcePath }, - Release = new WebhookGrabbedRelease(message.Release), + Release = new WebhookGrabbedRelease(message.Release, movieFile.IndexerFlags), IsUpgrade = message.OldMovieFiles.Any(), DownloadClient = message.DownloadClientInfo?.Name, DownloadClientType = message.DownloadClientInfo?.Type, diff --git a/src/NzbDrone.Core/Notifications/Webhook/WebhookGrabbedRelease.cs b/src/NzbDrone.Core/Notifications/Webhook/WebhookGrabbedRelease.cs index bcce1af601..265c1b74ad 100644 --- a/src/NzbDrone.Core/Notifications/Webhook/WebhookGrabbedRelease.cs +++ b/src/NzbDrone.Core/Notifications/Webhook/WebhookGrabbedRelease.cs @@ -1,3 +1,6 @@ +using System; +using System.Collections.Generic; +using System.Linq; using NzbDrone.Core.Parser.Model; namespace NzbDrone.Core.Notifications.Webhook @@ -18,10 +21,36 @@ public WebhookGrabbedRelease(GrabbedReleaseInfo release) ReleaseTitle = release.Title; Indexer = release.Indexer; Size = release.Size; + IndexerFlags = GetListOfIndexerFlags(release.IndexerFlags); + } + + public WebhookGrabbedRelease(GrabbedReleaseInfo release, IndexerFlags indexerFlags) + { + if (release == null) + { + IndexerFlags = GetListOfIndexerFlags(indexerFlags); + + return; + } + + ReleaseTitle = release.Title; + Indexer = release.Indexer; + Size = release.Size; + IndexerFlags = GetListOfIndexerFlags(release.IndexerFlags); } public string ReleaseTitle { get; set; } public string Indexer { get; set; } public long Size { get; set; } + public List IndexerFlags { get; set; } + + private static List GetListOfIndexerFlags(IndexerFlags indexerFlags) + { + return Enum.GetValues(typeof(IndexerFlags)) + .Cast() + .Where(f => (indexerFlags & f) == f) + .Select(f => f.ToString()) + .ToList(); + } } } diff --git a/src/NzbDrone.Core/Notifications/Webhook/WebhookRelease.cs b/src/NzbDrone.Core/Notifications/Webhook/WebhookRelease.cs index 656899c9ba..e03c7e0c01 100755 --- a/src/NzbDrone.Core/Notifications/Webhook/WebhookRelease.cs +++ b/src/NzbDrone.Core/Notifications/Webhook/WebhookRelease.cs @@ -24,7 +24,7 @@ public WebhookRelease(QualityModel quality, RemoteMovie remoteMovie) CustomFormats = remoteMovie.CustomFormats?.Select(x => x.Name).ToList(); CustomFormatScore = remoteMovie.CustomFormatScore; Languages = remoteMovie.Languages; - IndexerFlags = Enum.GetValues(typeof(IndexerFlags)).Cast().Where(r => (remoteMovie.Release.IndexerFlags & r) == r).Select(r => r.ToString()).ToList(); + IndexerFlags = Enum.GetValues(typeof(IndexerFlags)).Cast().Where(f => (remoteMovie.Release.IndexerFlags & f) == f).Select(f => f.ToString()).ToList(); } public string Quality { get; set; } diff --git a/src/NzbDrone.Core/Parser/Model/GrabbedReleaseInfo.cs b/src/NzbDrone.Core/Parser/Model/GrabbedReleaseInfo.cs index 0ad098983c..4914575813 100644 --- a/src/NzbDrone.Core/Parser/Model/GrabbedReleaseInfo.cs +++ b/src/NzbDrone.Core/Parser/Model/GrabbedReleaseInfo.cs @@ -1,3 +1,4 @@ +using System; using System.Collections.Generic; using System.Linq; using NzbDrone.Core.History; @@ -9,6 +10,7 @@ public class GrabbedReleaseInfo public string Title { get; set; } public string Indexer { get; set; } public long Size { get; set; } + public IndexerFlags IndexerFlags { get; set; } public List MovieIds { get; set; } @@ -19,11 +21,13 @@ public GrabbedReleaseInfo(List grabbedHistories) grabbedHistory.Data.TryGetValue("indexer", out var indexer); grabbedHistory.Data.TryGetValue("size", out var sizeString); + Enum.TryParse(grabbedHistory.Data.GetValueOrDefault("indexerFlags"), out IndexerFlags indexerFlags); long.TryParse(sizeString, out var size); Title = grabbedHistory.SourceTitle; Indexer = indexer; Size = size; + IndexerFlags = indexerFlags; MovieIds = movieIds; } }