DeviceService.cs 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. using MediaBrowser.Controller.Configuration;
  2. using MediaBrowser.Controller.Devices;
  3. using MediaBrowser.Controller.Net;
  4. using MediaBrowser.Controller.Security;
  5. using MediaBrowser.Controller.Session;
  6. using MediaBrowser.Model.Devices;
  7. using MediaBrowser.Model.Querying;
  8. using MediaBrowser.Model.Services;
  9. using Microsoft.Extensions.Logging;
  10. namespace MediaBrowser.Api.Devices
  11. {
  12. [Route("/Devices", "GET", Summary = "Gets all devices")]
  13. [Authenticated(Roles = "Admin")]
  14. public class GetDevices : DeviceQuery, IReturn<QueryResult<DeviceInfo>>
  15. {
  16. }
  17. [Route("/Devices/Info", "GET", Summary = "Gets info for a device")]
  18. [Authenticated(Roles = "Admin")]
  19. public class GetDeviceInfo : IReturn<DeviceInfo>
  20. {
  21. [ApiMember(Name = "Id", Description = "Device Id", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "GET")]
  22. public string Id { get; set; }
  23. }
  24. [Route("/Devices/Options", "GET", Summary = "Gets options for a device")]
  25. [Authenticated(Roles = "Admin")]
  26. public class GetDeviceOptions : IReturn<DeviceOptions>
  27. {
  28. [ApiMember(Name = "Id", Description = "Device Id", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "GET")]
  29. public string Id { get; set; }
  30. }
  31. [Route("/Devices", "DELETE", Summary = "Deletes a device")]
  32. public class DeleteDevice
  33. {
  34. [ApiMember(Name = "Id", Description = "Device Id", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "DELETE")]
  35. public string Id { get; set; }
  36. }
  37. [Route("/Devices/Options", "POST", Summary = "Updates device options")]
  38. [Authenticated(Roles = "Admin")]
  39. public class PostDeviceOptions : DeviceOptions, IReturnVoid
  40. {
  41. [ApiMember(Name = "Id", Description = "Device Id", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "DELETE")]
  42. public string Id { get; set; }
  43. }
  44. public class DeviceService : BaseApiService
  45. {
  46. private readonly IDeviceManager _deviceManager;
  47. private readonly IAuthenticationRepository _authRepo;
  48. private readonly ISessionManager _sessionManager;
  49. public DeviceService(
  50. ILogger<DeviceService> logger,
  51. IServerConfigurationManager serverConfigurationManager,
  52. IHttpResultFactory httpResultFactory,
  53. IDeviceManager deviceManager,
  54. IAuthenticationRepository authRepo,
  55. ISessionManager sessionManager)
  56. : base(logger, serverConfigurationManager, httpResultFactory)
  57. {
  58. _deviceManager = deviceManager;
  59. _authRepo = authRepo;
  60. _sessionManager = sessionManager;
  61. }
  62. public void Post(PostDeviceOptions request)
  63. {
  64. _deviceManager.UpdateDeviceOptions(request.Id, request);
  65. }
  66. public object Get(GetDevices request)
  67. {
  68. return ToOptimizedResult(_deviceManager.GetDevices(request));
  69. }
  70. public object Get(GetDeviceInfo request)
  71. {
  72. return _deviceManager.GetDevice(request.Id);
  73. }
  74. public object Get(GetDeviceOptions request)
  75. {
  76. return _deviceManager.GetDeviceOptions(request.Id);
  77. }
  78. public void Delete(DeleteDevice request)
  79. {
  80. var sessions = _authRepo.Get(new AuthenticationInfoQuery
  81. {
  82. DeviceId = request.Id
  83. }).Items;
  84. foreach (var session in sessions)
  85. {
  86. _sessionManager.Logout(session);
  87. }
  88. }
  89. }
  90. }