DtoOptions.cs 1.8 KB

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