diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2015-01-20 23:56:00 -0500 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2015-01-20 23:56:00 -0500 |
| commit | f5b7e1dba42f0cf9951d8f2a2324f10fda425565 (patch) | |
| tree | 3b35f14749b351586fa4085f2edf9a0176a8d4b3 | |
| parent | f636c10e24a6f26f1c8e41ba6d3751334d6dcb90 (diff) | |
add mark for removal options
| -rw-r--r-- | MediaBrowser.Api/Sync/SyncService.cs | 28 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Sync/ISyncManager.cs | 14 | ||||
| -rw-r--r-- | MediaBrowser.Model/ApiClient/IApiClient.cs | 31 | ||||
| -rw-r--r-- | MediaBrowser.Model/Sync/SyncJobItem.cs | 9 | ||||
| -rw-r--r-- | MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json | 3 | ||||
| -rw-r--r-- | MediaBrowser.Server.Implementations/Sync/SyncManager.cs | 36 |
6 files changed, 119 insertions, 2 deletions
diff --git a/MediaBrowser.Api/Sync/SyncService.cs b/MediaBrowser.Api/Sync/SyncService.cs index c763aa8df..b30df572b 100644 --- a/MediaBrowser.Api/Sync/SyncService.cs +++ b/MediaBrowser.Api/Sync/SyncService.cs @@ -44,6 +44,20 @@ namespace MediaBrowser.Api.Sync public string Id { get; set; } } + [Route("/Sync/JobItems/{Id}/MarkForRemoval", "POST", Summary = "Marks a job item for removal")] + public class MarkJobItemForRemoval : IReturnVoid + { + [ApiMember(Name = "Id", Description = "Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "POST")] + public string Id { get; set; } + } + + [Route("/Sync/JobItems/{Id}/UnmarkForRemoval", "POST", Summary = "Unmarks a job item for removal")] + public class UnmarkJobItemForRemoval : IReturnVoid + { + [ApiMember(Name = "Id", Description = "Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "POST")] + public string Id { get; set; } + } + [Route("/Sync/JobItems/{Id}", "DELETE", Summary = "Cancels a sync job item")] public class CancelSyncJobItem : IReturnVoid { @@ -299,5 +313,19 @@ namespace MediaBrowser.Api.Sync Task.WaitAll(task); } + + public void Post(MarkJobItemForRemoval request) + { + var task = _syncManager.MarkJobItemForRemoval(request.Id); + + Task.WaitAll(task); + } + + public void Post(UnmarkJobItemForRemoval request) + { + var task = _syncManager.UnmarkJobItemForRemoval(request.Id); + + Task.WaitAll(task); + } } } diff --git a/MediaBrowser.Controller/Sync/ISyncManager.cs b/MediaBrowser.Controller/Sync/ISyncManager.cs index 8e4b6a44a..62b6a3a37 100644 --- a/MediaBrowser.Controller/Sync/ISyncManager.cs +++ b/MediaBrowser.Controller/Sync/ISyncManager.cs @@ -128,5 +128,19 @@ namespace MediaBrowser.Controller.Sync /// <param name="request">The request.</param> /// <returns>Task<SyncDataResponse>.</returns> Task<SyncDataResponse> SyncData(SyncDataRequest request); + + /// <summary> + /// Marks the job item for removal. + /// </summary> + /// <param name="id">The identifier.</param> + /// <returns>Task.</returns> + Task MarkJobItemForRemoval(string id); + + /// <summary> + /// Unmarks the job item for removal. + /// </summary> + /// <param name="id">The identifier.</param> + /// <returns>Task.</returns> + Task UnmarkJobItemForRemoval(string id); } } diff --git a/MediaBrowser.Model/ApiClient/IApiClient.cs b/MediaBrowser.Model/ApiClient/IApiClient.cs index e8535278b..b6938b217 100644 --- a/MediaBrowser.Model/ApiClient/IApiClient.cs +++ b/MediaBrowser.Model/ApiClient/IApiClient.cs @@ -1449,12 +1449,41 @@ namespace MediaBrowser.Model.ApiClient /// <param name="request">The request.</param> /// <returns>Task<SyncDataResponse>.</returns> Task<SyncDataResponse> SyncData(SyncDataRequest request); - /// <summary> /// Gets the synchronize job item file URL. /// </summary> /// <param name="id">The identifier.</param> /// <returns>System.String.</returns> string GetSyncJobItemFileUrl(string id); + /// <summary> + /// Marks the synchronize job item for removal. + /// </summary> + /// <param name="id">The identifier.</param> + /// <returns>Task.</returns> + Task MarkSyncJobItemForRemoval(string id); + /// <summary> + /// Unmarks the synchronize job item for removal. + /// </summary> + /// <param name="id">The identifier.</param> + /// <returns>Task.</returns> + Task UnmarkSyncJobItemForRemoval(string id); + /// <summary> + /// Queues the failed synchronize job item for retry. + /// </summary> + /// <param name="id">The identifier.</param> + /// <returns>Task.</returns> + Task QueueFailedSyncJobItemForRetry(string id); + /// <summary> + /// Cancels the synchronize job item. + /// </summary> + /// <param name="id">The identifier.</param> + /// <returns>Task.</returns> + Task CancelSyncJobItem(string id); + /// <summary> + /// Enables the cancelled synchronize job item. + /// </summary> + /// <param name="id">The identifier.</param> + /// <returns>Task.</returns> + Task EnableCancelledSyncJobItem(string id); } }
\ No newline at end of file diff --git a/MediaBrowser.Model/Sync/SyncJobItem.cs b/MediaBrowser.Model/Sync/SyncJobItem.cs index 133065bf9..195d1e17e 100644 --- a/MediaBrowser.Model/Sync/SyncJobItem.cs +++ b/MediaBrowser.Model/Sync/SyncJobItem.cs @@ -86,8 +86,15 @@ namespace MediaBrowser.Model.Sync /// </summary> /// <value>The temporary path.</value> public string TemporaryPath { get; set; } + /// <summary> + /// Gets or sets the additional files. + /// </summary> + /// <value>The additional files.</value> public List<ItemFileInfo> AdditionalFiles { get; set; } - + /// <summary> + /// Gets or sets a value indicating whether this instance is marked for removal. + /// </summary> + /// <value><c>true</c> if this instance is marked for removal; otherwise, <c>false</c>.</value> public bool IsMarkedForRemoval { get; set; } public SyncJobItem() diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json index e4d20d3a1..62619a567 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json @@ -59,6 +59,7 @@ "ButtonCancelItem": "Cancel item", "ButtonQueueForRetry": "Queue for retry", "ButtonReenable": "Re-enable", + "SyncJobItemStatusSyncedMarkForRemoval": "Marked for removal", "LabelAbortedByServerShutdown": "(Aborted by server shutdown)", "LabelScheduledTaskLastRan": "Last ran {0}, taking {1}.", "HeaderDeleteTaskTrigger": "Delete Task Trigger", @@ -70,6 +71,8 @@ "LabelFree": "Free", "HeaderSelectAudio": "Select Audio", "HeaderSelectSubtitles": "Select Subtitles", + "ButtonMarkForRemoval": "Mark for removal from device", + "ButtonUnmarkForRemoval": "Unmark for removal from device", "LabelDefaultStream": "(Default)", "LabelForcedStream": "(Forced)", "LabelDefaultForcedStream": "(Default/Forced)", diff --git a/MediaBrowser.Server.Implementations/Sync/SyncManager.cs b/MediaBrowser.Server.Implementations/Sync/SyncManager.cs index 7e4455ab3..b5e29533b 100644 --- a/MediaBrowser.Server.Implementations/Sync/SyncManager.cs +++ b/MediaBrowser.Server.Implementations/Sync/SyncManager.cs @@ -684,5 +684,41 @@ namespace MediaBrowser.Server.Implementations.Sync await processor.UpdateJobStatus(jobItem.JobId).ConfigureAwait(false); } + + public async Task MarkJobItemForRemoval(string id) + { + var jobItem = _repo.GetJobItem(id); + + if (jobItem.Status != SyncJobItemStatus.Synced) + { + throw new ArgumentException("Operation is not valid for this job item"); + } + + jobItem.IsMarkedForRemoval = true; + + await _repo.Update(jobItem).ConfigureAwait(false); + + var processor = GetSyncJobProcessor(); + + await processor.UpdateJobStatus(jobItem.JobId).ConfigureAwait(false); + } + + public async Task UnmarkJobItemForRemoval(string id) + { + var jobItem = _repo.GetJobItem(id); + + if (jobItem.Status != SyncJobItemStatus.Synced) + { + throw new ArgumentException("Operation is not valid for this job item"); + } + + jobItem.IsMarkedForRemoval = false; + + await _repo.Update(jobItem).ConfigureAwait(false); + + var processor = GetSyncJobProcessor(); + + await processor.UpdateJobStatus(jobItem.JobId).ConfigureAwait(false); + } } } |
