YearHandler.cs 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. using MediaBrowser.Common.Net.Handlers;
  2. using MediaBrowser.Controller;
  3. using MediaBrowser.Controller.Entities;
  4. using MediaBrowser.Model.DTO;
  5. using System.Collections.Generic;
  6. using System.ComponentModel.Composition;
  7. using System.Net;
  8. using System.Threading.Tasks;
  9. namespace MediaBrowser.Api.HttpHandlers
  10. {
  11. /// <summary>
  12. /// Gets a single year
  13. /// </summary>
  14. [Export(typeof(BaseHandler))]
  15. public class YearHandler : BaseSerializationHandler<IbnItem>
  16. {
  17. public override bool HandlesRequest(HttpListenerRequest request)
  18. {
  19. return ApiService.IsApiUrlMatch("year", request);
  20. }
  21. protected override Task<IbnItem> GetObjectToSerialize()
  22. {
  23. var parent = ApiService.GetItemById(QueryString["id"]) as Folder;
  24. var user = ApiService.GetUserById(QueryString["userid"], true);
  25. string year = QueryString["year"];
  26. return GetYear(parent, user, int.Parse(year));
  27. }
  28. /// <summary>
  29. /// Gets a Year
  30. /// </summary>
  31. private async Task<IbnItem> GetYear(Folder parent, User user, int year)
  32. {
  33. int count = 0;
  34. // Get all the allowed recursive children
  35. IEnumerable<BaseItem> allItems = parent.GetParentalAllowedRecursiveChildren(user);
  36. foreach (var item in allItems)
  37. {
  38. if (item.ProductionYear.HasValue && item.ProductionYear.Value == year)
  39. {
  40. count++;
  41. }
  42. }
  43. // Get the original entity so that we can also supply the PrimaryImagePath
  44. return ApiService.GetIbnItem(await Kernel.Instance.ItemController.GetYear(year).ConfigureAwait(false), count);
  45. }
  46. }
  47. }