diff --git a/src/NzbDrone.Core/ImportLists/Youtube/YoutubeImportListBase.cs b/src/NzbDrone.Core/ImportLists/Youtube/YoutubeImportListBase.cs index 01bb42105..dd97727d5 100644 --- a/src/NzbDrone.Core/ImportLists/Youtube/YoutubeImportListBase.cs +++ b/src/NzbDrone.Core/ImportLists/Youtube/YoutubeImportListBase.cs @@ -57,9 +57,17 @@ namespace NzbDrone.Core.ImportLists.Youtube failures.AddIfNotNull(TestConnection()); } + public abstract ValidationFailure TestConnection(YouTubeService service); + private ValidationFailure TestConnection() { - return null; + using (var service = new YouTubeService(new BaseClientService.Initializer() + { + ApiKey = Settings.YoutubeApiKey, + })) + { + return TestConnection(service); + } } } } diff --git a/src/NzbDrone.Core/ImportLists/Youtube/YoutubePlaylist.cs b/src/NzbDrone.Core/ImportLists/Youtube/YoutubePlaylist.cs index 1a0027f79..726550e51 100644 --- a/src/NzbDrone.Core/ImportLists/Youtube/YoutubePlaylist.cs +++ b/src/NzbDrone.Core/ImportLists/Youtube/YoutubePlaylist.cs @@ -2,6 +2,7 @@ using System; using System.Collections.Generic; using System.Linq; using DryIoc.ImTools; +using FluentValidation.Results; using Google.Apis.YouTube.v3; using Google.Apis.YouTube.v3.Data; using NLog; @@ -94,5 +95,25 @@ namespace NzbDrone.Core.ImportLists.Youtube { return (playlistItem.ContentDetails.VideoPublishedAtDateTimeOffset ?? DateTimeOffset.UnixEpoch).DateTime; } + + public override ValidationFailure TestConnection(YouTubeService service) + { + foreach (var id in Settings.PlaylistIds) + { + try + { + var req = service.PlaylistItems.List("contentDetails,snippet"); + req.PlaylistId = id; + req.MaxResults = 1; + req.Execute(); + } + catch (Exception e) + { + return new ValidationFailure(string.Empty, e.Message); + } + } + + return null; + } } }