aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Api/Sync/SyncService.cs
blob: 57b5fa3f90e14023fb98a4c09839d03f7c0624f1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
using MediaBrowser.Controller.Net;
using MediaBrowser.Controller.Sync;
using MediaBrowser.Model.Querying;
using MediaBrowser.Model.Sync;
using ServiceStack;
using System.Threading.Tasks;

namespace MediaBrowser.Api.Sync
{
    [Route("/Sync/Jobs/{Id}", "DELETE", Summary = "Cancels a sync job.")]
    public class CancelSyncJob : IReturnVoid
    {
        [ApiMember(Name = "Id", Description = "Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "GET")]
        public string Id { get; set; }
    }

    [Route("/Sync/Schedules/{Id}", "DELETE", Summary = "Cancels a sync job.")]
    public class CancelSyncSchedule : IReturnVoid
    {
        [ApiMember(Name = "Id", Description = "Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "GET")]
        public string Id { get; set; }
    }

    [Route("/Sync/Jobs/{Id}", "GET", Summary = "Gets a sync job.")]
    public class GetSyncJob : IReturn<SyncJob>
    {
        [ApiMember(Name = "Id", Description = "Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "GET")]
        public string Id { get; set; }
    }

    [Route("/Sync/Schedules/{Id}", "GET", Summary = "Gets a sync job.")]
    public class GetSyncSchedule : IReturn<SyncSchedule>
    {
        [ApiMember(Name = "Id", Description = "Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "GET")]
        public string Id { get; set; }
    }

    [Route("/Sync/Jobs", "GET", Summary = "Gets sync jobs.")]
    public class GetSyncJobs : IReturn<QueryResult<SyncJob>>
    {
    }

    [Route("/Sync/Schedules", "GET", Summary = "Gets sync schedules.")]
    public class GetSyncSchedules : IReturn<QueryResult<SyncSchedule>>
    {
    }

    [Route("/Sync/Jobs", "POST", Summary = "Gets sync jobs.")]
    public class CreateSyncJob : SyncJobRequest
    {
    }

    [Route("/Sync/Schedules", "POST", Summary = "Gets sync schedules.")]
    public class CreateSyncSchedule : SyncScheduleRequest
    {
    }

    [Authenticated]
    public class SyncService : BaseApiService
    {
        private readonly ISyncManager _syncManager;

        public SyncService(ISyncManager syncManager)
        {
            _syncManager = syncManager;
        }

        public object Get(GetSyncJobs request)
        {
            var result = _syncManager.GetJobs(new SyncJobQuery
            {
                 
            });

            return ToOptimizedResult(result);
        }

        public object Get(GetSyncSchedules request)
        {
            var result = _syncManager.GetSchedules(new SyncScheduleQuery
            {
                 
            }); 

            return ToOptimizedResult(result);
        }

        public object Get(GetSyncJob request)
        {
            var result = _syncManager.GetJob(request.Id);

            return ToOptimizedResult(result);
        }

        public object Get(GetSyncSchedule request)
        {
            var result = _syncManager.GetSchedule(request.Id);

            return ToOptimizedResult(result);
        }

        public void Delete(CancelSyncJob request)
        {
            var task = _syncManager.CancelJob(request.Id);

            Task.WaitAll(task);
        }

        public void Delete(CancelSyncSchedule request)
        {
            var task = _syncManager.CancelSchedule(request.Id);

            Task.WaitAll(task);
        }

        public void Post(CreateSyncJob request)
        {
            var task = _syncManager.CreateJob(request);

            Task.WaitAll(task);
        }

        public void Post(CreateSyncSchedule request)
        {
            var task = _syncManager.CreateSchedule(request);

            Task.WaitAll(task);
        }
    }
}