|
|
|
@ -1,5 +1,6 @@
|
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using Nancy;
|
|
|
|
|
using NzbDrone.Core.Download;
|
|
|
|
|
using NzbDrone.Core.Download.Pending;
|
|
|
|
@ -16,6 +17,7 @@ namespace Sonarr.Api.V3.Queue
|
|
|
|
|
private readonly IQueueService _queueService;
|
|
|
|
|
private readonly ITrackedDownloadService _trackedDownloadService;
|
|
|
|
|
private readonly IFailedDownloadService _failedDownloadService;
|
|
|
|
|
private readonly IIgnoredDownloadService _ignoredDownloadService;
|
|
|
|
|
private readonly IProvideDownloadClient _downloadClientProvider;
|
|
|
|
|
private readonly IPendingReleaseService _pendingReleaseService;
|
|
|
|
|
private readonly IDownloadService _downloadService;
|
|
|
|
@ -23,6 +25,7 @@ namespace Sonarr.Api.V3.Queue
|
|
|
|
|
public QueueActionModule(IQueueService queueService,
|
|
|
|
|
ITrackedDownloadService trackedDownloadService,
|
|
|
|
|
IFailedDownloadService failedDownloadService,
|
|
|
|
|
IIgnoredDownloadService ignoredDownloadService,
|
|
|
|
|
IProvideDownloadClient downloadClientProvider,
|
|
|
|
|
IPendingReleaseService pendingReleaseService,
|
|
|
|
|
IDownloadService downloadService)
|
|
|
|
@ -30,6 +33,7 @@ namespace Sonarr.Api.V3.Queue
|
|
|
|
|
_queueService = queueService;
|
|
|
|
|
_trackedDownloadService = trackedDownloadService;
|
|
|
|
|
_failedDownloadService = failedDownloadService;
|
|
|
|
|
_ignoredDownloadService = ignoredDownloadService;
|
|
|
|
|
_downloadClientProvider = downloadClientProvider;
|
|
|
|
|
_pendingReleaseService = pendingReleaseService;
|
|
|
|
|
_downloadService = downloadService;
|
|
|
|
@ -76,9 +80,10 @@ namespace Sonarr.Api.V3.Queue
|
|
|
|
|
|
|
|
|
|
private object Remove(int id)
|
|
|
|
|
{
|
|
|
|
|
var removeFromClient = Request.GetBooleanQueryParameter("removeFromClient", true);
|
|
|
|
|
var blacklist = Request.GetBooleanQueryParameter("blacklist");
|
|
|
|
|
|
|
|
|
|
var trackedDownload = Remove(id, blacklist);
|
|
|
|
|
var trackedDownload = Remove(id, removeFromClient, blacklist);
|
|
|
|
|
|
|
|
|
|
if (trackedDownload != null)
|
|
|
|
|
{
|
|
|
|
@ -90,6 +95,7 @@ namespace Sonarr.Api.V3.Queue
|
|
|
|
|
|
|
|
|
|
private object Remove()
|
|
|
|
|
{
|
|
|
|
|
var removeFromClient = Request.GetBooleanQueryParameter("removeFromClient", true);
|
|
|
|
|
var blacklist = Request.GetBooleanQueryParameter("blacklist");
|
|
|
|
|
|
|
|
|
|
var resource = Request.Body.FromJson<QueueBulkResource>();
|
|
|
|
@ -97,7 +103,7 @@ namespace Sonarr.Api.V3.Queue
|
|
|
|
|
|
|
|
|
|
foreach (var id in resource.Ids)
|
|
|
|
|
{
|
|
|
|
|
var trackedDownload = Remove(id, blacklist);
|
|
|
|
|
var trackedDownload = Remove(id, removeFromClient, blacklist);
|
|
|
|
|
|
|
|
|
|
if (trackedDownload != null)
|
|
|
|
|
{
|
|
|
|
@ -110,7 +116,7 @@ namespace Sonarr.Api.V3.Queue
|
|
|
|
|
return new object();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private TrackedDownload Remove(int id, bool blacklist)
|
|
|
|
|
private TrackedDownload Remove(int id, bool removeFromClient, bool blacklist)
|
|
|
|
|
{
|
|
|
|
|
var pendingRelease = _pendingReleaseService.FindPendingQueueItem(id);
|
|
|
|
|
|
|
|
|
@ -128,19 +134,30 @@ namespace Sonarr.Api.V3.Queue
|
|
|
|
|
throw new NotFoundException();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var downloadClient = _downloadClientProvider.Get(trackedDownload.DownloadClient);
|
|
|
|
|
|
|
|
|
|
if (downloadClient == null)
|
|
|
|
|
if (removeFromClient)
|
|
|
|
|
{
|
|
|
|
|
throw new BadRequestException();
|
|
|
|
|
}
|
|
|
|
|
var downloadClient = _downloadClientProvider.Get(trackedDownload.DownloadClient);
|
|
|
|
|
|
|
|
|
|
if (downloadClient == null)
|
|
|
|
|
{
|
|
|
|
|
throw new BadRequestException();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
downloadClient.RemoveItem(trackedDownload.DownloadItem.DownloadId, true);
|
|
|
|
|
downloadClient.RemoveItem(trackedDownload.DownloadItem.DownloadId, true);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (blacklist)
|
|
|
|
|
{
|
|
|
|
|
_failedDownloadService.MarkAsFailed(trackedDownload.DownloadItem.DownloadId);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!removeFromClient && !blacklist)
|
|
|
|
|
{
|
|
|
|
|
if (!_ignoredDownloadService.IgnoreDownload(trackedDownload))
|
|
|
|
|
{
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return trackedDownload;
|
|
|
|
|
}
|
|
|
|
|