DisplayPreferencesService.cs 3.9 KB

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