diff --git a/src/NzbDrone.Api/Queue/QueueActionModule.cs b/src/NzbDrone.Api/Queue/QueueActionModule.cs index 6398af620..046806167 100644 --- a/src/NzbDrone.Api/Queue/QueueActionModule.cs +++ b/src/NzbDrone.Api/Queue/QueueActionModule.cs @@ -71,7 +71,7 @@ private object Remove(int id) throw new BadRequestException(); } - downloadClient.RemoveItem(trackedDownload.DownloadItem.DownloadId, true); + downloadClient.RemoveItem(trackedDownload.DownloadItem, true); if (blacklist) { diff --git a/src/NzbDrone.Core.Test/Download/DownloadClientTests/Blackhole/TorrentBlackholeFixture.cs b/src/NzbDrone.Core.Test/Download/DownloadClientTests/Blackhole/TorrentBlackholeFixture.cs index e30899030..3a1ab714c 100644 --- a/src/NzbDrone.Core.Test/Download/DownloadClientTests/Blackhole/TorrentBlackholeFixture.cs +++ b/src/NzbDrone.Core.Test/Download/DownloadClientTests/Blackhole/TorrentBlackholeFixture.cs @@ -3,6 +3,7 @@ using System.IO; using System.Linq; using System.Net; +using FizzWare.NBuilder; using FluentAssertions; using Moq; using NUnit.Framework; @@ -25,6 +26,7 @@ public class TorrentBlackholeFixture : DownloadClientFixtureBase + .CreateNew().With(d => d.DownloadId = "_Droned.S01E01.Pilot.1080p.WEB-DL-DRONE_0") + .Build(); + Mocker.SetConstant(Mocker.Resolve()); Subject.Definition = new DownloadClientDefinition(); @@ -246,7 +252,7 @@ public void RemoveItem_should_delete_file() .Setup(c => c.FileExists(It.IsAny())) .Returns(true); - Subject.RemoveItem("_Droned.1998.1080p.WEB-DL-DRONE_0", true); + Subject.RemoveItem(_downloadClientItem, true); Mocker.GetMock() .Verify(c => c.DeleteFile(It.IsAny()), Times.Once()); @@ -261,7 +267,7 @@ public void RemoveItem_should_delete_directory() .Setup(c => c.FolderExists(It.IsAny())) .Returns(true); - Subject.RemoveItem("_Droned.1998.1080p.WEB-DL-DRONE_0", true); + Subject.RemoveItem(_downloadClientItem, true); Mocker.GetMock() .Verify(c => c.DeleteFolder(It.IsAny(), true), Times.Once()); @@ -270,7 +276,7 @@ public void RemoveItem_should_delete_directory() [Test] public void RemoveItem_should_ignore_if_unknown_item() { - Subject.RemoveItem("_Droned.1998.1080p.WEB-DL-DRONE_0", true); + Subject.RemoveItem(_downloadClientItem, true); Mocker.GetMock() .Verify(c => c.DeleteFile(It.IsAny()), Times.Never()); @@ -284,7 +290,7 @@ public void RemoveItem_should_throw_if_deleteData_is_false() { GivenCompletedItem(); - Assert.Throws(() => Subject.RemoveItem("_Droned.1998.1080p.WEB-DL-DRONE_0", false)); + Assert.Throws(() => Subject.RemoveItem(_downloadClientItem, false)); Mocker.GetMock() .Verify(c => c.DeleteFile(It.IsAny()), Times.Never()); diff --git a/src/NzbDrone.Core.Test/Download/DownloadClientTests/Blackhole/UsenetBlackholeFixture.cs b/src/NzbDrone.Core.Test/Download/DownloadClientTests/Blackhole/UsenetBlackholeFixture.cs index 47771167a..7010294c6 100644 --- a/src/NzbDrone.Core.Test/Download/DownloadClientTests/Blackhole/UsenetBlackholeFixture.cs +++ b/src/NzbDrone.Core.Test/Download/DownloadClientTests/Blackhole/UsenetBlackholeFixture.cs @@ -3,6 +3,7 @@ using System.IO; using System.Linq; using System.Net; +using FizzWare.NBuilder; using FluentAssertions; using Moq; using NUnit.Framework; @@ -21,6 +22,7 @@ public class UsenetBlackholeFixture : DownloadClientFixtureBase protected string _completedDownloadFolder; protected string _blackholeFolder; protected string _filePath; + protected DownloadClientItem _downloadClientItem; [SetUp] public void Setup() @@ -29,6 +31,10 @@ public void Setup() _blackholeFolder = @"c:\blackhole\nzb".AsOsAgnostic(); _filePath = (@"c:\blackhole\nzb\" + _title + ".nzb").AsOsAgnostic(); + _downloadClientItem = Builder + .CreateNew().With(d => d.DownloadId = "_Droned.S01E01.Pilot.1080p.WEB-DL-DRONE_0") + .Build(); + Mocker.SetConstant(Mocker.Resolve()); Subject.Definition = new DownloadClientDefinition(); @@ -143,7 +149,7 @@ public void RemoveItem_should_delete_file() .Setup(c => c.FileExists(It.IsAny())) .Returns(true); - Subject.RemoveItem("_Droned.1998.1080p.WEB-DL-DRONE_0", true); + Subject.RemoveItem(_downloadClientItem, true); Mocker.GetMock() .Verify(c => c.DeleteFile(It.IsAny()), Times.Once()); @@ -158,7 +164,7 @@ public void RemoveItem_should_delete_directory() .Setup(c => c.FolderExists(It.IsAny())) .Returns(true); - Subject.RemoveItem("_Droned.1998.1080p.WEB-DL-DRONE_0", true); + Subject.RemoveItem(_downloadClientItem, true); Mocker.GetMock() .Verify(c => c.DeleteFolder(It.IsAny(), true), Times.Once()); @@ -167,7 +173,7 @@ public void RemoveItem_should_delete_directory() [Test] public void RemoveItem_should_ignore_if_unknown_item() { - Subject.RemoveItem("_Droned.1998.1080p.WEB-DL-DRONE_0", true); + Subject.RemoveItem(_downloadClientItem, true); Mocker.GetMock() .Verify(c => c.DeleteFile(It.IsAny()), Times.Never()); @@ -181,7 +187,7 @@ public void RemoveItem_should_throw_if_deleteData_is_false() { GivenCompletedItem(); - Assert.Throws(() => Subject.RemoveItem("_Droned.1998.1080p.WEB-DL-DRONE_0", false)); + Assert.Throws(() => Subject.RemoveItem(_downloadClientItem, false)); Mocker.GetMock() .Verify(c => c.DeleteFile(It.IsAny()), Times.Never()); diff --git a/src/NzbDrone.Core.Test/Download/DownloadClientTests/NzbgetTests/NzbgetFixture.cs b/src/NzbDrone.Core.Test/Download/DownloadClientTests/NzbgetTests/NzbgetFixture.cs index d985d584a..36d45032e 100644 --- a/src/NzbDrone.Core.Test/Download/DownloadClientTests/NzbgetTests/NzbgetFixture.cs +++ b/src/NzbDrone.Core.Test/Download/DownloadClientTests/NzbgetTests/NzbgetFixture.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; +using FizzWare.NBuilder; using FluentAssertions; using Moq; using NUnit.Framework; @@ -20,6 +21,7 @@ public class NzbgetFixture : DownloadClientFixtureBase private NzbgetHistoryItem _failed; private NzbgetHistoryItem _completed; private Dictionary _configItems; + private DownloadClientItem _downloadClientItem; [SetUp] public void Setup() @@ -74,6 +76,10 @@ public void Setup() MarkStatus = "NONE" }; + _downloadClientItem = Builder + .CreateNew().With(d => d.DownloadId = "_Droned.S01E01.Pilot.1080p.WEB-DL-DRONE_0") + .Build(); + Mocker.GetMock() .Setup(s => s.GetGlobalStatus(It.IsAny())) .Returns(new NzbgetGlobalStatus @@ -155,7 +161,7 @@ public void RemoveItem_should_delete_folder() .Setup(v => v.FolderExists(It.IsAny())) .Returns(true); - Subject.RemoveItem("id", true); + Subject.RemoveItem(_downloadClientItem, true); Mocker.GetMock() .Verify(v => v.DeleteFolder(It.IsAny(), true), Times.Once()); diff --git a/src/NzbDrone.Core.Test/Download/DownloadClientTests/PneumaticProviderFixture.cs b/src/NzbDrone.Core.Test/Download/DownloadClientTests/PneumaticProviderFixture.cs index 7c819e8e6..82743c431 100644 --- a/src/NzbDrone.Core.Test/Download/DownloadClientTests/PneumaticProviderFixture.cs +++ b/src/NzbDrone.Core.Test/Download/DownloadClientTests/PneumaticProviderFixture.cs @@ -1,6 +1,7 @@ using System; using System.IO; using System.Net; +using FizzWare.NBuilder; using Moq; using NUnit.Framework; using NzbDrone.Common.Http; @@ -21,6 +22,7 @@ public class PneumaticProviderFixture : CoreTest private string _strmFolder; private string _nzbPath; private RemoteMovie _remoteMovie; + private DownloadClientItem _downloadClientItem; [SetUp] public void Setup() @@ -37,6 +39,10 @@ public void Setup() _remoteMovie.ParsedMovieInfo = new ParsedMovieInfo(); + _downloadClientItem = Builder + .CreateNew().With(d => d.DownloadId = "_Droned.S01E01.Pilot.1080p.WEB-DL-DRONE_0") + .Build(); + Subject.Definition = new DownloadClientDefinition(); Subject.Definition.Settings = new PneumaticSettings { @@ -69,7 +75,7 @@ public void should_throw_on_failed_download() [Test] public void should_throw_item_is_removed() { - Assert.Throws(() => Subject.RemoveItem("", true)); + Assert.Throws(() => Subject.RemoveItem(_downloadClientItem, true)); } [Test] diff --git a/src/NzbDrone.Core.Test/Download/DownloadClientTests/SabnzbdTests/SabnzbdFixture.cs b/src/NzbDrone.Core.Test/Download/DownloadClientTests/SabnzbdTests/SabnzbdFixture.cs index e566b5654..e0ac39a84 100644 --- a/src/NzbDrone.Core.Test/Download/DownloadClientTests/SabnzbdTests/SabnzbdFixture.cs +++ b/src/NzbDrone.Core.Test/Download/DownloadClientTests/SabnzbdTests/SabnzbdFixture.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; +using FizzWare.NBuilder; using FluentAssertions; using Moq; using NUnit.Framework; @@ -22,6 +23,7 @@ public class SabnzbdFixture : DownloadClientFixtureBase private SabnzbdHistory _completed; private SabnzbdConfig _config; private SabnzbdFullStatus _fullStatus; + private DownloadClientItem _downloadClientItem; [SetUp] public void Setup() @@ -99,6 +101,10 @@ public void Setup() } }; + _downloadClientItem = Builder + .CreateNew().With(d => d.DownloadId = _completed.Items.First().Id) + .Build(); + Mocker.GetMock() .Setup(v => v.GetVersion(It.IsAny())) .Returns("1.2.3"); @@ -592,7 +598,7 @@ public void should_remove_output_path_folder_when_deleting_a_completed_item_and_ GivenQueue(null); GivenHistory(_completed); - Subject.RemoveItem(_completed.Items.First().Id, true); + Subject.RemoveItem(_downloadClientItem, true); Mocker.GetMock() .Verify(v => v.DeleteFolder(path, true), Times.Once); @@ -619,7 +625,7 @@ public void should_remove_output_path_file_when_deleting_a_completed_item_and_de GivenQueue(null); GivenHistory(_completed); - Subject.RemoveItem(_completed.Items.First().Id, true); + Subject.RemoveItem(_downloadClientItem, true); Mocker.GetMock() .Verify(v => v.DeleteFolder(path, true), Times.Never); @@ -646,7 +652,7 @@ public void should_not_remove_output_path_file_when_deleting_a_completed_item_an GivenQueue(null); GivenHistory(_completed); - Subject.RemoveItem(_completed.Items.First().Id, true); + Subject.RemoveItem(_downloadClientItem, true); Mocker.GetMock() .Verify(v => v.DeleteFolder(path, true), Times.Never); @@ -673,7 +679,7 @@ public void should_not_remove_output_path_file_when_deleting_a_completed_item_an GivenQueue(null); GivenHistory(_completed); - Subject.RemoveItem(_completed.Items.First().Id, false); + Subject.RemoveItem(_downloadClientItem, false); Mocker.GetMock() .Verify(v => v.FolderExists(path), Times.Never); diff --git a/src/NzbDrone.Core/Download/Clients/Blackhole/TorrentBlackhole.cs b/src/NzbDrone.Core/Download/Clients/Blackhole/TorrentBlackhole.cs index da5f54b6b..5ad0fcb3a 100644 --- a/src/NzbDrone.Core/Download/Clients/Blackhole/TorrentBlackhole.cs +++ b/src/NzbDrone.Core/Download/Clients/Blackhole/TorrentBlackhole.cs @@ -106,14 +106,14 @@ public override IEnumerable GetItems() } } - public override void RemoveItem(string downloadId, bool deleteData) + public override void RemoveItem(DownloadClientItem item, bool deleteData) { if (!deleteData) { throw new NotSupportedException("Blackhole cannot remove DownloadItem without deleting the data as well, ignoring."); } - DeleteItemData(downloadId); + DeleteItemData(item); } public override DownloadClientInfo GetStatus() diff --git a/src/NzbDrone.Core/Download/Clients/Blackhole/UsenetBlackhole.cs b/src/NzbDrone.Core/Download/Clients/Blackhole/UsenetBlackhole.cs index 94f9ae5e8..67b260b79 100644 --- a/src/NzbDrone.Core/Download/Clients/Blackhole/UsenetBlackhole.cs +++ b/src/NzbDrone.Core/Download/Clients/Blackhole/UsenetBlackhole.cs @@ -78,14 +78,14 @@ public override IEnumerable GetItems() } } - public override void RemoveItem(string downloadId, bool deleteData) + public override void RemoveItem(DownloadClientItem item, bool deleteData) { if (!deleteData) { throw new NotSupportedException("Blackhole cannot remove DownloadItem without deleting the data as well, ignoring."); } - DeleteItemData(downloadId); + DeleteItemData(item); } public override DownloadClientInfo GetStatus() diff --git a/src/NzbDrone.Core/Download/Clients/Deluge/Deluge.cs b/src/NzbDrone.Core/Download/Clients/Deluge/Deluge.cs index 6cde18c99..a07691b05 100644 --- a/src/NzbDrone.Core/Download/Clients/Deluge/Deluge.cs +++ b/src/NzbDrone.Core/Download/Clients/Deluge/Deluge.cs @@ -190,9 +190,9 @@ public override IEnumerable GetItems() return items; } - public override void RemoveItem(string downloadId, bool deleteData) + public override void RemoveItem(DownloadClientItem item, bool deleteData) { - _proxy.RemoveTorrent(downloadId.ToLower(), deleteData, Settings); + _proxy.RemoveTorrent(item.DownloadId.ToLower(), deleteData, Settings); } public override DownloadClientInfo GetStatus() diff --git a/src/NzbDrone.Core/Download/Clients/DownloadStation/TorrentDownloadStation.cs b/src/NzbDrone.Core/Download/Clients/DownloadStation/TorrentDownloadStation.cs index 96a31397b..82f392ae9 100644 --- a/src/NzbDrone.Core/Download/Clients/DownloadStation/TorrentDownloadStation.cs +++ b/src/NzbDrone.Core/Download/Clients/DownloadStation/TorrentDownloadStation.cs @@ -134,15 +134,15 @@ public override DownloadClientInfo GetStatus() } } - public override void RemoveItem(string downloadId, bool deleteData) + public override void RemoveItem(DownloadClientItem item, bool deleteData) { if (deleteData) { - DeleteItemData(downloadId); + DeleteItemData(item); } - _dsTaskProxy.RemoveTask(ParseDownloadId(downloadId), Settings); - _logger.Debug("{0} removed correctly", downloadId); + _dsTaskProxy.RemoveTask(ParseDownloadId(item.DownloadId), Settings); + _logger.Debug("{0} removed correctly", item.DownloadId); } protected OsPath GetOutputPath(OsPath outputPath, DownloadStationTask torrent, string serialNumber) diff --git a/src/NzbDrone.Core/Download/Clients/DownloadStation/UsenetDownloadStation.cs b/src/NzbDrone.Core/Download/Clients/DownloadStation/UsenetDownloadStation.cs index 646928124..684414171 100644 --- a/src/NzbDrone.Core/Download/Clients/DownloadStation/UsenetDownloadStation.cs +++ b/src/NzbDrone.Core/Download/Clients/DownloadStation/UsenetDownloadStation.cs @@ -158,15 +158,15 @@ public override DownloadClientInfo GetStatus() } } - public override void RemoveItem(string downloadId, bool deleteData) + public override void RemoveItem(DownloadClientItem item, bool deleteData) { if (deleteData) { - DeleteItemData(downloadId); + DeleteItemData(item); } - _dsTaskProxy.RemoveTask(ParseDownloadId(downloadId), Settings); - _logger.Debug("{0} removed correctly", downloadId); + _dsTaskProxy.RemoveTask(ParseDownloadId(item.DownloadId), Settings); + _logger.Debug("{0} removed correctly", item.DownloadId); } protected override string AddFromNzbFile(RemoteMovie remoteMovie, string filename, byte[] fileContent) diff --git a/src/NzbDrone.Core/Download/Clients/Flood/Flood.cs b/src/NzbDrone.Core/Download/Clients/Flood/Flood.cs index 1b88aea33..c058f74f0 100644 --- a/src/NzbDrone.Core/Download/Clients/Flood/Flood.cs +++ b/src/NzbDrone.Core/Download/Clients/Flood/Flood.cs @@ -201,9 +201,10 @@ public override void MarkItemAsImported(DownloadClientItem downloadClientItem) } } - public override void RemoveItem(string downloadId, bool deleteData) + public override void RemoveItem(DownloadClientItem item, bool deleteData) { - _proxy.DeleteTorrent(downloadId, deleteData, Settings); + _proxy.DeleteTorrent(item.DownloadId, deleteData, Settings); + _proxy.DeleteTorrent(item.DownloadId, deleteData, Settings); } public override DownloadClientInfo GetStatus() diff --git a/src/NzbDrone.Core/Download/Clients/Hadouken/Hadouken.cs b/src/NzbDrone.Core/Download/Clients/Hadouken/Hadouken.cs index 0a2a67316..28eb3b4f1 100644 --- a/src/NzbDrone.Core/Download/Clients/Hadouken/Hadouken.cs +++ b/src/NzbDrone.Core/Download/Clients/Hadouken/Hadouken.cs @@ -109,15 +109,15 @@ public override IEnumerable GetItems() return items; } - public override void RemoveItem(string downloadId, bool deleteData) + public override void RemoveItem(DownloadClientItem item, bool deleteData) { if (deleteData) { - _proxy.RemoveTorrentAndData(Settings, downloadId); + _proxy.RemoveTorrentAndData(Settings, item.DownloadId); } else { - _proxy.RemoveTorrent(Settings, downloadId); + _proxy.RemoveTorrent(Settings, item.DownloadId); } } diff --git a/src/NzbDrone.Core/Download/Clients/NzbVortex/NzbVortex.cs b/src/NzbDrone.Core/Download/Clients/NzbVortex/NzbVortex.cs index c62051994..06e737aca 100644 --- a/src/NzbDrone.Core/Download/Clients/NzbVortex/NzbVortex.cs +++ b/src/NzbDrone.Core/Download/Clients/NzbVortex/NzbVortex.cs @@ -121,19 +121,19 @@ public override IEnumerable GetItems() return queueItems; } - public override void RemoveItem(string downloadId, bool deleteData) + public override void RemoveItem(DownloadClientItem item, bool deleteData) { // Try to find the download by numerical ID, otherwise try by AddUUID int id; - if (int.TryParse(downloadId, out id)) + if (int.TryParse(item.DownloadId, out id)) { _proxy.Remove(id, deleteData, Settings); } else { var queue = _proxy.GetQueue(30, Settings); - var queueItem = queue.FirstOrDefault(c => c.AddUUID == downloadId); + var queueItem = queue.FirstOrDefault(c => c.AddUUID == item.DownloadId); if (queueItem != null) { diff --git a/src/NzbDrone.Core/Download/Clients/Nzbget/Nzbget.cs b/src/NzbDrone.Core/Download/Clients/Nzbget/Nzbget.cs index 2d4f28482..c9c4d1da4 100644 --- a/src/NzbDrone.Core/Download/Clients/Nzbget/Nzbget.cs +++ b/src/NzbDrone.Core/Download/Clients/Nzbget/Nzbget.cs @@ -195,14 +195,14 @@ public override IEnumerable GetItems() return GetQueue().Concat(GetHistory()).Where(downloadClientItem => downloadClientItem.Category == Settings.MovieCategory); } - public override void RemoveItem(string downloadId, bool deleteData) + public override void RemoveItem(DownloadClientItem item, bool deleteData) { if (deleteData) { - DeleteItemData(downloadId); + DeleteItemData(item); } - _proxy.RemoveItem(downloadId, Settings); + _proxy.RemoveItem(item.DownloadId, Settings); } public override DownloadClientInfo GetStatus() diff --git a/src/NzbDrone.Core/Download/Clients/Pneumatic/Pneumatic.cs b/src/NzbDrone.Core/Download/Clients/Pneumatic/Pneumatic.cs index 1455c3bb7..49e5dd573 100644 --- a/src/NzbDrone.Core/Download/Clients/Pneumatic/Pneumatic.cs +++ b/src/NzbDrone.Core/Download/Clients/Pneumatic/Pneumatic.cs @@ -98,7 +98,7 @@ public override IEnumerable GetItems() } } - public override void RemoveItem(string downloadId, bool deleteData) + public override void RemoveItem(DownloadClientItem item, bool deleteData) { throw new NotSupportedException(); } diff --git a/src/NzbDrone.Core/Download/Clients/QBittorrent/QBittorrent.cs b/src/NzbDrone.Core/Download/Clients/QBittorrent/QBittorrent.cs index cf9c533ef..83985f9ea 100644 --- a/src/NzbDrone.Core/Download/Clients/QBittorrent/QBittorrent.cs +++ b/src/NzbDrone.Core/Download/Clients/QBittorrent/QBittorrent.cs @@ -155,7 +155,7 @@ protected override string AddFromTorrentFile(RemoteMovie remoteMovie, string has { _logger.Warn(ex, "Failed to set the torrent seed criteria for {0}.", hash); } - } + } if (moveToTop) { @@ -320,9 +320,9 @@ public override IEnumerable GetItems() return queueItems; } - public override void RemoveItem(string hash, bool deleteData) + public override void RemoveItem(DownloadClientItem item, bool deleteData) { - Proxy.RemoveTorrent(hash.ToLower(), deleteData, Settings); + Proxy.RemoveTorrent(item.DownloadId.ToLower(), deleteData, Settings); } public override DownloadClientItem GetImportItem(DownloadClientItem item, DownloadClientItem previousImportAttempt) diff --git a/src/NzbDrone.Core/Download/Clients/Sabnzbd/Sabnzbd.cs b/src/NzbDrone.Core/Download/Clients/Sabnzbd/Sabnzbd.cs index 6dc940034..7123a8911 100644 --- a/src/NzbDrone.Core/Download/Clients/Sabnzbd/Sabnzbd.cs +++ b/src/NzbDrone.Core/Download/Clients/Sabnzbd/Sabnzbd.cs @@ -194,47 +194,22 @@ public override IEnumerable GetItems() } } - public override void RemoveItem(string downloadId, bool deleteData) + public override void RemoveItem(DownloadClientItem item, bool deleteData) { - var historyItem = GetHistory().SingleOrDefault(v => v.DownloadId == downloadId); + var queueClientItem = GetQueue().SingleOrDefault(v => v.DownloadId == item.DownloadId); - if (historyItem == null) + if (queueClientItem == null) { - _proxy.RemoveFrom("queue", downloadId, deleteData, Settings); + if (deleteData && item.Status == DownloadItemStatus.Completed) + { + DeleteItemData(item); + } + + _proxy.RemoveFrom("history", item.DownloadId, deleteData, Settings); } else { - _proxy.RemoveFrom("history", downloadId, deleteData, Settings); - - // Completed items in SAB's history do not remove the files from the file system when deleted, even if instructed to. - // If the output path is valid delete the file(s), otherwise warn that they cannot be deleted. - if (deleteData && historyItem.Status == DownloadItemStatus.Completed) - { - if (ValidatePath(historyItem)) - { - var outputPath = historyItem.OutputPath; - - try - { - if (_diskProvider.FolderExists(outputPath.FullPath)) - { - _diskProvider.DeleteFolder(outputPath.FullPath.ToString(), true); - } - else if (_diskProvider.FileExists(outputPath.FullPath)) - { - _diskProvider.DeleteFile(outputPath.FullPath.ToString()); - } - } - catch (Exception) - { - _logger.Error("Unable to delete output path: '{0}'. Delete file(s) manually", outputPath.FullPath); - } - } - else - { - _logger.Warn("Invalid path '{0}'. Delete file(s) manually"); - } - } + _proxy.RemoveFrom("queue", item.DownloadId, deleteData, Settings); } } diff --git a/src/NzbDrone.Core/Download/Clients/Transmission/TransmissionBase.cs b/src/NzbDrone.Core/Download/Clients/Transmission/TransmissionBase.cs index 2c94d2719..f8de7f975 100644 --- a/src/NzbDrone.Core/Download/Clients/Transmission/TransmissionBase.cs +++ b/src/NzbDrone.Core/Download/Clients/Transmission/TransmissionBase.cs @@ -159,9 +159,9 @@ protected bool HasReachedSeedLimit(TransmissionTorrent torrent, double? ratio, L return false; } - public override void RemoveItem(string downloadId, bool deleteData) + public override void RemoveItem(DownloadClientItem item, bool deleteData) { - _proxy.RemoveTorrent(downloadId.ToLower(), deleteData, Settings); + _proxy.RemoveTorrent(item.DownloadId.ToLower(), deleteData, Settings); } public override DownloadClientInfo GetStatus() diff --git a/src/NzbDrone.Core/Download/Clients/Vuze/Vuze.cs b/src/NzbDrone.Core/Download/Clients/Vuze/Vuze.cs index 358fde84c..5592d571e 100644 --- a/src/NzbDrone.Core/Download/Clients/Vuze/Vuze.cs +++ b/src/NzbDrone.Core/Download/Clients/Vuze/Vuze.cs @@ -26,9 +26,9 @@ public Vuze(ITransmissionProxy proxy, { } - public override void RemoveItem(string downloadId, bool deleteData) + public override void RemoveItem(DownloadClientItem item, bool deleteData) { - _proxy.RemoveTorrent(downloadId, deleteData, Settings); + _proxy.RemoveTorrent(item.DownloadId, deleteData, Settings); } protected override OsPath GetOutputPath(OsPath outputPath, TransmissionTorrent torrent) diff --git a/src/NzbDrone.Core/Download/Clients/rTorrent/RTorrent.cs b/src/NzbDrone.Core/Download/Clients/rTorrent/RTorrent.cs index 22fa1d64b..058b88ef3 100644 --- a/src/NzbDrone.Core/Download/Clients/rTorrent/RTorrent.cs +++ b/src/NzbDrone.Core/Download/Clients/rTorrent/RTorrent.cs @@ -163,14 +163,14 @@ public override IEnumerable GetItems() return items; } - public override void RemoveItem(string downloadId, bool deleteData) + public override void RemoveItem(DownloadClientItem item, bool deleteData) { if (deleteData) { - DeleteItemData(downloadId); + DeleteItemData(item); } - _proxy.RemoveTorrent(downloadId, Settings); + _proxy.RemoveTorrent(item.DownloadId, Settings); } public override DownloadClientInfo GetStatus() diff --git a/src/NzbDrone.Core/Download/Clients/uTorrent/UTorrent.cs b/src/NzbDrone.Core/Download/Clients/uTorrent/UTorrent.cs index 0b12cc535..660e03c13 100644 --- a/src/NzbDrone.Core/Download/Clients/uTorrent/UTorrent.cs +++ b/src/NzbDrone.Core/Download/Clients/uTorrent/UTorrent.cs @@ -208,9 +208,9 @@ private List GetTorrents() return torrents; } - public override void RemoveItem(string downloadId, bool deleteData) + public override void RemoveItem(DownloadClientItem item, bool deleteData) { - _proxy.RemoveTorrent(downloadId, deleteData, Settings); + _proxy.RemoveTorrent(item.DownloadId, deleteData, Settings); } public override DownloadClientInfo GetStatus() diff --git a/src/NzbDrone.Core/Download/DownloadClientBase.cs b/src/NzbDrone.Core/Download/DownloadClientBase.cs index b4520d92b..76e729592 100644 --- a/src/NzbDrone.Core/Download/DownloadClientBase.cs +++ b/src/NzbDrone.Core/Download/DownloadClientBase.cs @@ -4,7 +4,6 @@ using FluentValidation.Results; using NLog; using NzbDrone.Common.Disk; -using NzbDrone.Common.Extensions; using NzbDrone.Core.Configuration; using NzbDrone.Core.Indexers; using NzbDrone.Core.Organizer; @@ -72,20 +71,13 @@ public virtual DownloadClientItem GetImportItem(DownloadClientItem item, Downloa return item; } - public abstract void RemoveItem(string downloadId, bool deleteData); + public abstract void RemoveItem(DownloadClientItem item, bool deleteData); public abstract DownloadClientInfo GetStatus(); - protected virtual void DeleteItemData(string downloadId) + protected virtual void DeleteItemData(DownloadClientItem item) { - if (downloadId.IsNullOrWhiteSpace()) - { - return; - } - - var item = GetItems().FirstOrDefault(v => v.DownloadId == downloadId); if (item == null) { - _logger.Trace("DownloadItem {0} in {1} history not found, skipping delete data.", downloadId, Name); return; } diff --git a/src/NzbDrone.Core/Download/DownloadEventHub.cs b/src/NzbDrone.Core/Download/DownloadEventHub.cs index ef219a3a0..e0359d765 100644 --- a/src/NzbDrone.Core/Download/DownloadEventHub.cs +++ b/src/NzbDrone.Core/Download/DownloadEventHub.cs @@ -62,7 +62,7 @@ private void RemoveFromDownloadClient(TrackedDownload trackedDownload) try { _logger.Debug("[{0}] Removing download from {1} history", trackedDownload.DownloadItem.Title, trackedDownload.DownloadItem.DownloadClientInfo.Name); - downloadClient.RemoveItem(trackedDownload.DownloadItem.DownloadId, true); + downloadClient.RemoveItem(trackedDownload.DownloadItem, true); trackedDownload.DownloadItem.Removed = true; } catch (NotSupportedException) diff --git a/src/NzbDrone.Core/Download/IDownloadClient.cs b/src/NzbDrone.Core/Download/IDownloadClient.cs index f9c857ee8..bb29aa961 100644 --- a/src/NzbDrone.Core/Download/IDownloadClient.cs +++ b/src/NzbDrone.Core/Download/IDownloadClient.cs @@ -1,5 +1,4 @@ using System.Collections.Generic; -using NzbDrone.Common.Disk; using NzbDrone.Core.Indexers; using NzbDrone.Core.Parser.Model; using NzbDrone.Core.ThingiProvider; @@ -12,7 +11,7 @@ public interface IDownloadClient : IProvider string Download(RemoteMovie remoteMovie); IEnumerable GetItems(); DownloadClientItem GetImportItem(DownloadClientItem item, DownloadClientItem previousImportAttempt); - void RemoveItem(string downloadId, bool deleteData); + void RemoveItem(DownloadClientItem item, bool deleteData); DownloadClientInfo GetStatus(); void MarkItemAsImported(DownloadClientItem downloadClientItem); } diff --git a/src/Radarr.Api.V3/Queue/QueueActionModule.cs b/src/Radarr.Api.V3/Queue/QueueActionModule.cs index de6c411ed..7116a5c44 100644 --- a/src/Radarr.Api.V3/Queue/QueueActionModule.cs +++ b/src/Radarr.Api.V3/Queue/QueueActionModule.cs @@ -141,7 +141,7 @@ private TrackedDownload Remove(int id, bool removeFromClient, bool blacklist) throw new BadRequestException(); } - downloadClient.RemoveItem(trackedDownload.DownloadItem.DownloadId, true); + downloadClient.RemoveItem(trackedDownload.DownloadItem, true); } if (blacklist)