From 0f75a9008a7c2329cd0798d3414b560e4ead5710 Mon Sep 17 00:00:00 2001 From: Mark McDowall Date: Fri, 11 Apr 2014 23:04:01 -0700 Subject: [PATCH] New: Get series images via the API (3rd party app support) --- .../MediaCovers/MediaCoverModule.cs | 39 +++++++++++++++++++ src/NzbDrone.Api/NzbDrone.Api.csproj | 1 + 2 files changed, 40 insertions(+) create mode 100644 src/NzbDrone.Api/MediaCovers/MediaCoverModule.cs diff --git a/src/NzbDrone.Api/MediaCovers/MediaCoverModule.cs b/src/NzbDrone.Api/MediaCovers/MediaCoverModule.cs new file mode 100644 index 000000000..7b0cc4ea9 --- /dev/null +++ b/src/NzbDrone.Api/MediaCovers/MediaCoverModule.cs @@ -0,0 +1,39 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using Nancy; +using Nancy.Responses; +using NzbDrone.Common; +using NzbDrone.Common.Disk; +using NzbDrone.Common.EnvironmentInfo; + +namespace NzbDrone.Api.MediaCovers +{ + public class MediaCoverModule : NzbDroneApiModule + { + private const string MEDIA_COVER_ROUTE = @"/(?\d+)/(?(.+)\.(jpg|png|gif))"; + + private readonly IAppFolderInfo _appFolderInfo; + private readonly IDiskProvider _diskProvider; + + public MediaCoverModule(IAppFolderInfo appFolderInfo, IDiskProvider diskProvider) : base("MediaCover") + { + _appFolderInfo = appFolderInfo; + _diskProvider = diskProvider; + + Get[MEDIA_COVER_ROUTE] = options => GetMediaCover(options.seriesId, options.filename); + } + + private Response GetMediaCover(int seriesId, string filename) + { + var filePath = Path.Combine(_appFolderInfo.GetAppDataPath(), "MediaCover", seriesId.ToString(), filename); + + if (!_diskProvider.FileExists(filePath)) + return new NotFoundResponse(); + + return new StreamResponse(() => File.OpenRead(filePath), MimeTypes.GetMimeType(filePath)); + } + } +} diff --git a/src/NzbDrone.Api/NzbDrone.Api.csproj b/src/NzbDrone.Api/NzbDrone.Api.csproj index b1e81be9c..e6d6a32c9 100644 --- a/src/NzbDrone.Api/NzbDrone.Api.csproj +++ b/src/NzbDrone.Api/NzbDrone.Api.csproj @@ -140,6 +140,7 @@ +