SyncService.cs 3.7 KB

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