From 3dc9d3a4204ec07435c8df25b265d77a8fb0b3ee Mon Sep 17 00:00:00 2001 From: Ross Valler Date: Sun, 26 Feb 2017 08:06:20 -0500 Subject: [PATCH] Fix/implement Webhook notifications (#901) --- .../Notifications/Webhook/Webhook.cs | 8 +-- .../Notifications/Webhook/WebhookMovie.cs | 28 +++++++++++ .../Notifications/Webhook/WebhookPayload.cs | 6 +-- .../Webhook/WebhookRemoteMovie.cs | 25 ++++++++++ .../Notifications/Webhook/WebhookService.cs | 49 +++++++------------ src/NzbDrone.Core/NzbDrone.Core.csproj | 2 + 6 files changed, 79 insertions(+), 39 deletions(-) create mode 100644 src/NzbDrone.Core/Notifications/Webhook/WebhookMovie.cs create mode 100644 src/NzbDrone.Core/Notifications/Webhook/WebhookRemoteMovie.cs diff --git a/src/NzbDrone.Core/Notifications/Webhook/Webhook.cs b/src/NzbDrone.Core/Notifications/Webhook/Webhook.cs index 74ae13f89..a10d1262d 100644 --- a/src/NzbDrone.Core/Notifications/Webhook/Webhook.cs +++ b/src/NzbDrone.Core/Notifications/Webhook/Webhook.cs @@ -19,21 +19,21 @@ namespace NzbDrone.Core.Notifications.Webhook public override void OnGrab(GrabMessage message) { - _service.OnGrab(message.Series, message.Episode, message.Quality, Settings); + _service.OnGrab(message.Movie, message.RemoteMovie, message.Quality, Settings); } public override void OnDownload(DownloadMessage message) { - _service.OnDownload(message.Series, message.EpisodeFile, Settings); + _service.OnDownload(message.Movie, message.MovieFile, Settings); } public override void OnMovieRename(Movie movie) { + _service.OnRename(movie, Settings); } - + public override void OnRename(Series series) { - _service.OnRename(series, Settings); } public override string Name => "Webhook"; diff --git a/src/NzbDrone.Core/Notifications/Webhook/WebhookMovie.cs b/src/NzbDrone.Core/Notifications/Webhook/WebhookMovie.cs new file mode 100644 index 000000000..0d38862e8 --- /dev/null +++ b/src/NzbDrone.Core/Notifications/Webhook/WebhookMovie.cs @@ -0,0 +1,28 @@ +using System.IO; +using NzbDrone.Core.Tv; +using NzbDrone.Core.MediaFiles; + +namespace NzbDrone.Core.Notifications.Webhook +{ + public class WebhookMovie + { + public int Id { get; set; } + public string Title { get; set; } + public string FilePath { get; set; } + + public WebhookMovie() { } + + public WebhookMovie(Movie movie) + { + Id = movie.Id; + Title = movie.Title; + } + + public WebhookMovie(Movie movie, MovieFile movieFile) + { + Id = movie.Id; + Title = movie.Title; + FilePath = Path.Combine(movie.Path, movieFile.RelativePath); + } + } +} diff --git a/src/NzbDrone.Core/Notifications/Webhook/WebhookPayload.cs b/src/NzbDrone.Core/Notifications/Webhook/WebhookPayload.cs index 41009a695..8be45eb18 100644 --- a/src/NzbDrone.Core/Notifications/Webhook/WebhookPayload.cs +++ b/src/NzbDrone.Core/Notifications/Webhook/WebhookPayload.cs @@ -5,7 +5,7 @@ namespace NzbDrone.Core.Notifications.Webhook public class WebhookPayload { public string EventType { get; set; } - public WebhookSeries Series { get; set; } - public List Episodes { get; set; } + public WebhookMovie Movie { get; set; } + public WebhookRemoteMovie RemoteMovie { get; set; } } -} \ No newline at end of file +} diff --git a/src/NzbDrone.Core/Notifications/Webhook/WebhookRemoteMovie.cs b/src/NzbDrone.Core/Notifications/Webhook/WebhookRemoteMovie.cs new file mode 100644 index 000000000..95f6b78fa --- /dev/null +++ b/src/NzbDrone.Core/Notifications/Webhook/WebhookRemoteMovie.cs @@ -0,0 +1,25 @@ +using NzbDrone.Core.Tv; +using NzbDrone.Core.Parser.Model; + +namespace NzbDrone.Core.Notifications.Webhook +{ + public class WebhookRemoteMovie + { + public string ImdbId { get; set; } + public string Title { get; set; } + + public WebhookRemoteMovie() { } + + public WebhookRemoteMovie(RemoteMovie remoteMovie) + { + ImdbId = remoteMovie.Movie.ImdbId; + Title = remoteMovie.Release.Title; + } + + public WebhookRemoteMovie(Movie movie) + { + ImdbId = movie.ImdbId; + Title = movie.Title; + } + } +} diff --git a/src/NzbDrone.Core/Notifications/Webhook/WebhookService.cs b/src/NzbDrone.Core/Notifications/Webhook/WebhookService.cs index b04efa168..f3677fbd3 100644 --- a/src/NzbDrone.Core/Notifications/Webhook/WebhookService.cs +++ b/src/NzbDrone.Core/Notifications/Webhook/WebhookService.cs @@ -12,54 +12,44 @@ namespace NzbDrone.Core.Notifications.Webhook { public interface IWebhookService { - void OnDownload(Series series, EpisodeFile episodeFile, WebhookSettings settings); - void OnRename(Series series, WebhookSettings settings); - void OnGrab(Series series, RemoteEpisode episode, QualityModel quality, WebhookSettings settings); + void OnDownload(Movie movie, MovieFile movieFile, WebhookSettings settings); + void OnRename(Movie movie, WebhookSettings settings); + void OnGrab(Movie movie, RemoteMovie remoteMovie, QualityModel quality, WebhookSettings settings); ValidationFailure Test(WebhookSettings settings); } public class WebhookService : IWebhookService { - public void OnDownload(Series series, EpisodeFile episodeFile, WebhookSettings settings) + public void OnDownload(Movie movie, MovieFile movieFile, WebhookSettings settings) { var payload = new WebhookPayload { EventType = "Download", - Series = new WebhookSeries(series), - Episodes = episodeFile.Episodes.Value.ConvertAll(x => new WebhookEpisode(x) { - Quality = episodeFile.Quality.Quality.Name, - QualityVersion = episodeFile.Quality.Revision.Version, - ReleaseGroup = episodeFile.ReleaseGroup, - SceneName = episodeFile.SceneName - }) + Movie = new WebhookMovie(movie, movieFile), + RemoteMovie = new WebhookRemoteMovie(movie) }; NotifyWebhook(payload, settings); } - public void OnRename(Series series, WebhookSettings settings) + public void OnRename(Movie movie, WebhookSettings settings) { var payload = new WebhookPayload { EventType = "Rename", - Series = new WebhookSeries(series) + Movie = new WebhookMovie(movie) }; NotifyWebhook(payload, settings); } - public void OnGrab(Series series, RemoteEpisode episode, QualityModel quality, WebhookSettings settings) + public void OnGrab(Movie movie, RemoteMovie remoteMovie, QualityModel quality, WebhookSettings settings) { var payload = new WebhookPayload { EventType = "Grab", - Series = new WebhookSeries(series), - Episodes = episode.Episodes.ConvertAll(x => new WebhookEpisode(x) - { - Quality = quality.Quality.Name, - QualityVersion = quality.Revision.Version, - ReleaseGroup = episode.ParsedEpisodeInfo.ReleaseGroup - }) + Movie = new WebhookMovie(movie), + RemoteMovie = new WebhookRemoteMovie(remoteMovie) }; NotifyWebhook(payload, settings); } @@ -87,23 +77,18 @@ namespace NzbDrone.Core.Notifications.Webhook new WebhookPayload { EventType = "Test", - Series = new WebhookSeries() + Movie = new WebhookMovie() { Id = 1, Title = "Test Title", - Path = "C:\\testpath", - TvdbId = 1234 + FilePath = "C:\\testpath", }, - Episodes = new List() { - new WebhookEpisode() - { - Id = 123, - EpisodeNumber = 1, - SeasonNumber = 1, - Title = "Test title" - } + RemoteMovie = new WebhookRemoteMovie(){ + ImdbId = "tt012345", + Title = "My Awesome Movie!" } }, + settings ); } diff --git a/src/NzbDrone.Core/NzbDrone.Core.csproj b/src/NzbDrone.Core/NzbDrone.Core.csproj index b43b6f871..67ed3aab1 100644 --- a/src/NzbDrone.Core/NzbDrone.Core.csproj +++ b/src/NzbDrone.Core/NzbDrone.Core.csproj @@ -973,6 +973,8 @@ + +