SyncService.cs 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. using MediaBrowser.Controller.Net;
  2. using MediaBrowser.Controller.Sync;
  3. using MediaBrowser.Model.Querying;
  4. using MediaBrowser.Model.Sync;
  5. using ServiceStack;
  6. using System.Collections.Generic;
  7. using System.Threading.Tasks;
  8. namespace MediaBrowser.Api.Sync
  9. {
  10. [Route("/Sync/Jobs/{Id}", "DELETE", Summary = "Cancels a sync job.")]
  11. public class CancelSyncJob : IReturnVoid
  12. {
  13. [ApiMember(Name = "Id", Description = "Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "GET")]
  14. public string Id { get; set; }
  15. }
  16. [Route("/Sync/Schedules/{Id}", "DELETE", Summary = "Cancels a sync job.")]
  17. public class CancelSyncSchedule : IReturnVoid
  18. {
  19. [ApiMember(Name = "Id", Description = "Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "GET")]
  20. public string Id { get; set; }
  21. }
  22. [Route("/Sync/Jobs/{Id}", "GET", Summary = "Gets a sync job.")]
  23. public class GetSyncJob : IReturn<SyncJob>
  24. {
  25. [ApiMember(Name = "Id", Description = "Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "GET")]
  26. public string Id { get; set; }
  27. }
  28. [Route("/Sync/Schedules/{Id}", "GET", Summary = "Gets a sync job.")]
  29. public class GetSyncSchedule : IReturn<SyncSchedule>
  30. {
  31. [ApiMember(Name = "Id", Description = "Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "GET")]
  32. public string Id { get; set; }
  33. }
  34. [Route("/Sync/Jobs", "GET", Summary = "Gets sync jobs.")]
  35. public class GetSyncJobs : IReturn<QueryResult<SyncJob>>
  36. {
  37. }
  38. [Route("/Sync/Schedules", "GET", Summary = "Gets sync schedules.")]
  39. public class GetSyncSchedules : IReturn<QueryResult<SyncSchedule>>
  40. {
  41. }
  42. [Route("/Sync/Jobs", "POST", Summary = "Gets sync jobs.")]
  43. public class CreateSyncJob : SyncJobRequest
  44. {
  45. }
  46. [Route("/Sync/Targets", "GET", Summary = "Gets a list of available sync targets.")]
  47. public class GetSyncTarget : IReturn<List<SyncTarget>>
  48. {
  49. [ApiMember(Name = "UserId", Description = "UserId", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "GET")]
  50. public string UserId { get; set; }
  51. }
  52. [Authenticated]
  53. public class SyncService : BaseApiService
  54. {
  55. private readonly ISyncManager _syncManager;
  56. public SyncService(ISyncManager syncManager)
  57. {
  58. _syncManager = syncManager;
  59. }
  60. public object Get(GetSyncTarget request)
  61. {
  62. var result = _syncManager.GetSyncTargets(request.UserId);
  63. return ToOptimizedResult(result);
  64. }
  65. public object Get(GetSyncJobs request)
  66. {
  67. var result = _syncManager.GetJobs(new SyncJobQuery
  68. {
  69. });
  70. return ToOptimizedResult(result);
  71. }
  72. public object Get(GetSyncSchedules request)
  73. {
  74. var result = _syncManager.GetSchedules(new SyncScheduleQuery
  75. {
  76. });
  77. return ToOptimizedResult(result);
  78. }
  79. public object Get(GetSyncJob request)
  80. {
  81. var result = _syncManager.GetJob(request.Id);
  82. return ToOptimizedResult(result);
  83. }
  84. public object Get(GetSyncSchedule request)
  85. {
  86. var result = _syncManager.GetSchedule(request.Id);
  87. return ToOptimizedResult(result);
  88. }
  89. public void Delete(CancelSyncJob request)
  90. {
  91. var task = _syncManager.CancelJob(request.Id);
  92. Task.WaitAll(task);
  93. }
  94. public void Delete(CancelSyncSchedule request)
  95. {
  96. var task = _syncManager.CancelSchedule(request.Id);
  97. Task.WaitAll(task);
  98. }
  99. public void Post(CreateSyncJob request)
  100. {
  101. var task = _syncManager.CreateJob(request);
  102. Task.WaitAll(task);
  103. }
  104. }
  105. }