DtoOptions.cs 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. #pragma warning disable CS1591
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using MediaBrowser.Model.Entities;
  6. using MediaBrowser.Model.Querying;
  7. namespace MediaBrowser.Controller.Dto
  8. {
  9. public class DtoOptions
  10. {
  11. private static readonly ItemFields[] DefaultExcludedFields = new[]
  12. {
  13. ItemFields.SeasonUserData,
  14. ItemFields.RefreshState
  15. };
  16. public IReadOnlyList<ItemFields> Fields { get; set; }
  17. public IReadOnlyList<ImageType> ImageTypes { get; set; }
  18. public int ImageTypeLimit { get; set; }
  19. public bool EnableImages { get; set; }
  20. public bool AddProgramRecordingInfo { get; set; }
  21. public bool EnableUserData { get; set; }
  22. public bool AddCurrentProgram { get; set; }
  23. public DtoOptions()
  24. : this(true)
  25. {
  26. }
  27. private static readonly ImageType[] AllImageTypes = Enum.GetNames(typeof(ImageType))
  28. .Select(i => (ImageType)Enum.Parse(typeof(ImageType), i, true))
  29. .ToArray();
  30. private static readonly ItemFields[] AllItemFields = Enum.GetNames(typeof(ItemFields))
  31. .Select(i => (ItemFields)Enum.Parse(typeof(ItemFields), i, true))
  32. .Except(DefaultExcludedFields)
  33. .ToArray();
  34. public bool ContainsField(ItemFields field)
  35. => Fields.Contains(field);
  36. public DtoOptions(bool allFields)
  37. {
  38. ImageTypeLimit = int.MaxValue;
  39. EnableImages = true;
  40. EnableUserData = true;
  41. AddCurrentProgram = true;
  42. Fields = allFields ? AllItemFields : Array.Empty<ItemFields>();
  43. ImageTypes = AllImageTypes;
  44. }
  45. public int GetImageLimit(ImageType type)
  46. {
  47. if (EnableImages && ImageTypes.Contains(type))
  48. {
  49. return ImageTypeLimit;
  50. }
  51. return 0;
  52. }
  53. }
  54. }