DisplayPreferencesService.cs 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. using MediaBrowser.Controller.Library;
  2. using MediaBrowser.Model.Entities;
  3. using MediaBrowser.Model.Serialization;
  4. using ServiceStack.ServiceHost;
  5. using System;
  6. using System.Threading;
  7. using System.Threading.Tasks;
  8. namespace MediaBrowser.Api
  9. {
  10. /// <summary>
  11. /// Class UpdateDisplayPreferences
  12. /// </summary>
  13. [Route("/DisplayPreferences/{DisplayPreferencesId}", "POST")]
  14. [Api(("Updates a user's display preferences for an item"))]
  15. public class UpdateDisplayPreferences : DisplayPreferences, IReturnVoid
  16. {
  17. /// <summary>
  18. /// Gets or sets the id.
  19. /// </summary>
  20. /// <value>The id.</value>
  21. [ApiMember(Name = "DisplayPreferencesId", Description = "DisplayPreferences Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "POST")]
  22. public Guid DisplayPreferencesId { get; set; }
  23. }
  24. [Route("/DisplayPreferences/{Id}", "GET")]
  25. [Api(("Gets a user's display preferences for an item"))]
  26. public class GetDisplayPreferences : IReturn<DisplayPreferences>
  27. {
  28. /// <summary>
  29. /// Gets or sets the id.
  30. /// </summary>
  31. /// <value>The id.</value>
  32. [ApiMember(Name = "Id", Description = "Item Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "GET")]
  33. public Guid Id { get; set; }
  34. }
  35. /// <summary>
  36. /// Class DisplayPreferencesService
  37. /// </summary>
  38. public class DisplayPreferencesService : BaseApiService
  39. {
  40. /// <summary>
  41. /// The _display preferences manager
  42. /// </summary>
  43. private readonly IDisplayPreferencesManager _displayPreferencesManager;
  44. /// <summary>
  45. /// The _json serializer
  46. /// </summary>
  47. private readonly IJsonSerializer _jsonSerializer;
  48. /// <summary>
  49. /// Initializes a new instance of the <see cref="DisplayPreferencesService" /> class.
  50. /// </summary>
  51. /// <param name="jsonSerializer">The json serializer.</param>
  52. /// <param name="displayPreferencesManager">The display preferences manager.</param>
  53. public DisplayPreferencesService(IJsonSerializer jsonSerializer, IDisplayPreferencesManager displayPreferencesManager)
  54. {
  55. _jsonSerializer = jsonSerializer;
  56. _displayPreferencesManager = displayPreferencesManager;
  57. }
  58. /// <summary>
  59. /// Gets the specified request.
  60. /// </summary>
  61. /// <param name="request">The request.</param>
  62. public object Get(GetDisplayPreferences request)
  63. {
  64. var task = _displayPreferencesManager.GetDisplayPreferences(request.Id);
  65. return ToOptimizedResult(task.Result);
  66. }
  67. /// <summary>
  68. /// Posts the specified request.
  69. /// </summary>
  70. /// <param name="request">The request.</param>
  71. public void Post(UpdateDisplayPreferences request)
  72. {
  73. // Serialize to json and then back so that the core doesn't see the request dto type
  74. var displayPreferences = _jsonSerializer.DeserializeFromString<DisplayPreferences>(_jsonSerializer.SerializeToString(request));
  75. var task = _displayPreferencesManager.SaveDisplayPreferences(displayPreferences, CancellationToken.None);
  76. Task.WaitAll(task);
  77. }
  78. }
  79. }