diff options
| author | LukePulverenti <luke.pulverenti@gmail.com> | 2013-02-20 20:33:05 -0500 |
|---|---|---|
| committer | LukePulverenti <luke.pulverenti@gmail.com> | 2013-02-20 20:33:05 -0500 |
| commit | 767cdc1f6f6a63ce997fc9476911e2c361f9d402 (patch) | |
| tree | 49add55976f895441167c66cfa95e5c7688d18ce /MediaBrowser.Api/UserLibrary/StudiosService.cs | |
| parent | 845554722efaed872948a9e0f7202e3ef52f1b6e (diff) | |
Pushing missing changes
Diffstat (limited to 'MediaBrowser.Api/UserLibrary/StudiosService.cs')
| -rw-r--r-- | MediaBrowser.Api/UserLibrary/StudiosService.cs | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/MediaBrowser.Api/UserLibrary/StudiosService.cs b/MediaBrowser.Api/UserLibrary/StudiosService.cs new file mode 100644 index 000000000..da9106367 --- /dev/null +++ b/MediaBrowser.Api/UserLibrary/StudiosService.cs @@ -0,0 +1,69 @@ +using MediaBrowser.Common.Net; +using MediaBrowser.Controller; +using MediaBrowser.Controller.Entities; +using ServiceStack.ServiceHost; +using System; +using System.Collections.Generic; +using System.ComponentModel.Composition; +using System.Linq; +using System.Threading.Tasks; + +namespace MediaBrowser.Api.UserLibrary +{ + /// <summary> + /// Class GetStudios + /// </summary> + [Route("/Users/{UserId}/Items/{Id}/Studios", "GET")] + [Route("/Users/{UserId}/Items/Root/Studios", "GET")] + public class GetStudios : GetItemsByName + { + } + + /// <summary> + /// Class StudiosService + /// </summary> + [Export(typeof(IRestfulService))] + public class StudiosService : BaseItemsByNameService<Studio> + { + /// <summary> + /// Gets the specified request. + /// </summary> + /// <param name="request">The request.</param> + /// <returns>System.Object.</returns> + public object Get(GetStudios request) + { + var result = GetResult(request).Result; + + return ToOptimizedResult(result); + } + + /// <summary> + /// Gets all items. + /// </summary> + /// <param name="request">The request.</param> + /// <param name="items">The items.</param> + /// <param name="user">The user.</param> + /// <returns>IEnumerable{Tuple{System.StringFunc{System.Int32}}}.</returns> + protected override IEnumerable<Tuple<string, Func<int>>> GetAllItems(GetItemsByName request, IEnumerable<BaseItem> items, User user) + { + var itemsList = items.Where(i => i.Studios != null).ToList(); + + return itemsList + .SelectMany(i => i.Studios) + .Distinct(StringComparer.OrdinalIgnoreCase) + .Select(name => new Tuple<string, Func<int>>(name, () => itemsList.Count(i => i.Studios.Contains(name, StringComparer.OrdinalIgnoreCase)))); + } + + /// <summary> + /// Gets the entity. + /// </summary> + /// <param name="name">The name.</param> + /// <returns>Task{Studio}.</returns> + protected override Task<Studio> GetEntity(string name) + { + var kernel = (Kernel)Kernel; + + return kernel.LibraryManager.GetStudio(name); + } + } +} |
