diff options
| author | crobibero <cody@robibe.ro> | 2020-07-20 14:28:33 -0600 |
|---|---|---|
| committer | crobibero <cody@robibe.ro> | 2020-07-20 14:28:33 -0600 |
| commit | 13850644973b1223bbeb2271e42ad252d43a10bf (patch) | |
| tree | 5373b3953dabd692ae937483078569cb0525772e /MediaBrowser.Api/UserLibrary/YearsService.cs | |
| parent | 352dab701866b37d0dd5dcaa6343ccc256d7e837 (diff) | |
| parent | 0750357916b600a4b4c27bc4babd2adcc6390473 (diff) | |
Merge remote-tracking branch 'upstream/master' into api-migration-merge
Diffstat (limited to 'MediaBrowser.Api/UserLibrary/YearsService.cs')
| -rw-r--r-- | MediaBrowser.Api/UserLibrary/YearsService.cs | 131 |
1 files changed, 131 insertions, 0 deletions
diff --git a/MediaBrowser.Api/UserLibrary/YearsService.cs b/MediaBrowser.Api/UserLibrary/YearsService.cs new file mode 100644 index 000000000..0523f89fa --- /dev/null +++ b/MediaBrowser.Api/UserLibrary/YearsService.cs @@ -0,0 +1,131 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using MediaBrowser.Controller.Configuration; +using MediaBrowser.Controller.Dto; +using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Library; +using MediaBrowser.Controller.Net; +using MediaBrowser.Model.Dto; +using MediaBrowser.Model.Services; +using Microsoft.Extensions.Logging; + +namespace MediaBrowser.Api.UserLibrary +{ + /// <summary> + /// Class GetYears. + /// </summary> + [Route("/Years", "GET", Summary = "Gets all years from a given item, folder, or the entire library")] + public class GetYears : GetItemsByName + { + } + + /// <summary> + /// Class GetYear. + /// </summary> + [Route("/Years/{Year}", "GET", Summary = "Gets a year")] + public class GetYear : IReturn<BaseItemDto> + { + /// <summary> + /// Gets or sets the year. + /// </summary> + /// <value>The year.</value> + [ApiMember(Name = "Year", Description = "The year", IsRequired = true, DataType = "int", ParameterType = "path", Verb = "GET")] + public int Year { get; set; } + + /// <summary> + /// Gets or sets the user id. + /// </summary> + /// <value>The user id.</value> + [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; } + } + + /// <summary> + /// Class YearsService. + /// </summary> + [Authenticated] + public class YearsService : BaseItemsByNameService<Year> + { + public YearsService( + ILogger<YearsService> logger, + IServerConfigurationManager serverConfigurationManager, + IHttpResultFactory httpResultFactory, + IUserManager userManager, + ILibraryManager libraryManager, + IUserDataManager userDataRepository, + IDtoService dtoService, + IAuthorizationContext authorizationContext) + : base( + logger, + serverConfigurationManager, + httpResultFactory, + userManager, + libraryManager, + userDataRepository, + dtoService, + authorizationContext) + { + } + + /// <summary> + /// Gets the specified request. + /// </summary> + /// <param name="request">The request.</param> + /// <returns>System.Object.</returns> + public object Get(GetYear request) + { + var result = GetItem(request); + + return ToOptimizedResult(result); + } + + /// <summary> + /// Gets the item. + /// </summary> + /// <param name="request">The request.</param> + /// <returns>Task{BaseItemDto}.</returns> + private BaseItemDto GetItem(GetYear request) + { + var item = LibraryManager.GetYear(request.Year); + + var dtoOptions = GetDtoOptions(AuthorizationContext, request); + + if (!request.UserId.Equals(Guid.Empty)) + { + var user = UserManager.GetUserById(request.UserId); + + return DtoService.GetBaseItemDto(item, dtoOptions, user); + } + + return DtoService.GetBaseItemDto(item, dtoOptions); + } + + /// <summary> + /// Gets the specified request. + /// </summary> + /// <param name="request">The request.</param> + /// <returns>System.Object.</returns> + public object Get(GetYears request) + { + var result = GetResult(request); + + return ToOptimizedResult(result); + } + + /// <summary> + /// Gets all items. + /// </summary> + /// <param name="request">The request.</param> + /// <param name="items">The items.</param> + /// <returns>IEnumerable{Tuple{System.StringFunc{System.Int32}}}.</returns> + protected override IEnumerable<BaseItem> GetAllItems(GetItemsByName request, IList<BaseItem> items) + { + return items + .Select(i => i.ProductionYear ?? 0) + .Where(i => i > 0) + .Distinct() + .Select(year => LibraryManager.GetYear(year)); + } + } +} |
