diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2013-10-31 21:48:14 -0400 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2013-10-31 21:48:14 -0400 |
| commit | 926a6100751e38d687111e961209b565bd8a3eb4 (patch) | |
| tree | 2fb08f69b209d70da16890e3e6bd33493f307de6 /MediaBrowser.Api/RemoteImageService.cs | |
| parent | 9adcdd007afb453cf9b860bfbb49d3b0bb958fa2 (diff) | |
fixes #551 - Add manual image selection for movies
Diffstat (limited to 'MediaBrowser.Api/RemoteImageService.cs')
| -rw-r--r-- | MediaBrowser.Api/RemoteImageService.cs | 60 |
1 files changed, 55 insertions, 5 deletions
diff --git a/MediaBrowser.Api/RemoteImageService.cs b/MediaBrowser.Api/RemoteImageService.cs index b50bf4ffe..c5f1005c7 100644 --- a/MediaBrowser.Api/RemoteImageService.cs +++ b/MediaBrowser.Api/RemoteImageService.cs @@ -5,10 +5,11 @@ using MediaBrowser.Model.Providers; using ServiceStack.ServiceHost; using System.Linq; using System.Threading; +using System.Threading.Tasks; namespace MediaBrowser.Api { - [Route("/Items/{Id}/RemoteImages/{Type}", "GET")] + [Route("/Items/{Id}/RemoteImages", "GET")] [Api(Description = "Gets available remote images for an item")] public class GetRemoteImages : IReturn<RemoteImageResult> { @@ -19,8 +20,8 @@ namespace MediaBrowser.Api [ApiMember(Name = "Id", Description = "Item Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "GET")] public string Id { get; set; } - [ApiMember(Name = "Type", Description = "The image type", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "GET")] - public ImageType Type { get; set; } + [ApiMember(Name = "Type", Description = "The image type", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "GET")] + public ImageType? Type { get; set; } /// <summary> /// Skips over a given number of items within the results. Use for paging. @@ -35,6 +36,30 @@ namespace MediaBrowser.Api /// <value>The limit.</value> [ApiMember(Name = "Limit", Description = "Optional. The maximum number of records to return", IsRequired = false, DataType = "int", ParameterType = "query", Verb = "GET")] public int? Limit { get; set; } + + [ApiMember(Name = "ProviderName", Description = "Optional. The image provider to use", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")] + public string ProviderName { get; set; } + } + + [Route("/Items/{Id}/RemoteImages/Download", "POST")] + [Api(Description = "Downloads a remote image for an item")] + public class DownloadRemoteImage : IReturnVoid + { + /// <summary> + /// Gets or sets the id. + /// </summary> + /// <value>The id.</value> + [ApiMember(Name = "Id", Description = "Item Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "GET")] + public string Id { get; set; } + + [ApiMember(Name = "Type", Description = "The image type", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "GET")] + public ImageType Type { get; set; } + + [ApiMember(Name = "ProviderName", Description = "The image provider", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")] + public string ProviderName { get; set; } + + [ApiMember(Name = "ImageUrl", Description = "The image url", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")] + public string ImageUrl { get; set; } } public class RemoteImageService : BaseApiService @@ -53,13 +78,14 @@ namespace MediaBrowser.Api { var item = _dtoService.GetItemByDtoId(request.Id); - var images = _providerManager.GetAvailableRemoteImages(item, request.Type, CancellationToken.None).Result; + var images = _providerManager.GetAvailableRemoteImages(item, CancellationToken.None, request.ProviderName, request.Type).Result; var imagesList = images.ToList(); var result = new RemoteImageResult { - TotalRecordCount = imagesList.Count + TotalRecordCount = imagesList.Count, + Providers = _providerManager.GetImageProviders(item).Select(i => i.Name).ToList() }; if (request.StartIndex.HasValue) @@ -78,5 +104,29 @@ namespace MediaBrowser.Api return ToOptimizedResult(result); } + + public void Post(DownloadRemoteImage request) + { + var task = DownloadRemoteImage(request); + + Task.WaitAll(task); + } + + private async Task DownloadRemoteImage(DownloadRemoteImage request) + { + var item = _dtoService.GetItemByDtoId(request.Id); + + int? index = null; + + if (request.Type == ImageType.Backdrop) + { + index = item.BackdropImagePaths.Count; + } + + await _providerManager.SaveImage(item, request.ImageUrl, null, request.Type, index, CancellationToken.None).ConfigureAwait(false); + + await item.RefreshMetadata(CancellationToken.None, forceSave: true, allowSlowProviders: false) + .ConfigureAwait(false); + } } } |
