From 374b7f2f039211d5a8fb80348b72070841f393ec Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Mon, 22 Apr 2013 00:38:03 -0400 Subject: new Artist entity --- MediaBrowser.Api/UserLibrary/YearsService.cs | 70 ++++++++++++++++++++++++++-- 1 file changed, 65 insertions(+), 5 deletions(-) (limited to 'MediaBrowser.Api/UserLibrary/YearsService.cs') diff --git a/MediaBrowser.Api/UserLibrary/YearsService.cs b/MediaBrowser.Api/UserLibrary/YearsService.cs index b22a8dac3..79cb08ef9 100644 --- a/MediaBrowser.Api/UserLibrary/YearsService.cs +++ b/MediaBrowser.Api/UserLibrary/YearsService.cs @@ -1,7 +1,11 @@ -using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Dto; +using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Persistence; +using MediaBrowser.Model.Dto; +using MediaBrowser.Model.Querying; using ServiceStack.ServiceHost; +using System; using System.Collections.Generic; using System.Globalization; using System.Linq; @@ -12,13 +16,34 @@ namespace MediaBrowser.Api.UserLibrary /// /// Class GetYears /// - [Route("/Users/{UserId}/Items/{ParentId}/Years", "GET")] - [Route("/Users/{UserId}/Items/Root/Years", "GET")] + [Route("/Years", "GET")] [Api(Description = "Gets all years from a given item, folder, or the entire library")] public class GetYears : GetItemsByName { } + /// + /// Class GetYear + /// + [Route("/Years/{Year}", "GET")] + [Api(Description = "Gets a year")] + public class GetYear : IReturn + { + /// + /// Gets or sets the year. + /// + /// The year. + [ApiMember(Name = "Year", Description = "The year", IsRequired = true, DataType = "int", ParameterType = "path", Verb = "GET")] + public int Year { get; set; } + + /// + /// Gets or sets the user id. + /// + /// The user id. + [ApiMember(Name = "UserId", Description = "Optional. Filter by user id, and attach user data", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")] + public Guid? UserId { get; set; } + } + /// /// Class YearsService /// @@ -34,6 +59,42 @@ namespace MediaBrowser.Api.UserLibrary { } + /// + /// Gets the specified request. + /// + /// The request. + /// System.Object. + public object Get(GetYear request) + { + var result = GetItem(request).Result; + + return ToOptimizedResult(result); + } + + /// + /// Gets the item. + /// + /// The request. + /// Task{BaseItemDto}. + private async Task GetItem(GetYear request) + { + var item = await LibraryManager.GetYear(request.Year).ConfigureAwait(false); + + // Get everything + var fields = Enum.GetNames(typeof(ItemFields)).Select(i => (ItemFields)Enum.Parse(typeof(ItemFields), i, true)); + + var builder = new DtoBuilder(Logger, LibraryManager, UserDataRepository); + + if (request.UserId.HasValue) + { + var user = UserManager.GetUserById(request.UserId.Value); + + return await builder.GetBaseItemDto(item, user, fields.ToList()).ConfigureAwait(false); + } + + return await builder.GetBaseItemDto(item, fields.ToList()).ConfigureAwait(false); + } + /// /// Gets the specified request. /// @@ -51,9 +112,8 @@ namespace MediaBrowser.Api.UserLibrary /// /// The request. /// The items. - /// The user. /// IEnumerable{Tuple{System.StringFunc{System.Int32}}}. - protected override IEnumerable> GetAllItems(GetItemsByName request, IEnumerable items, User user) + protected override IEnumerable> GetAllItems(GetItemsByName request, IEnumerable items) { var itemsList = items.Where(i => i.ProductionYear != null).ToList(); -- cgit v1.2.3