diff --git a/src/NzbDrone.Core.Test/Download/DownloadClientTests/Blackhole/TorrentBlackholeFixture.cs b/src/NzbDrone.Core.Test/Download/DownloadClientTests/Blackhole/TorrentBlackholeFixture.cs index dd41f671d..5c364cee7 100644 --- a/src/NzbDrone.Core.Test/Download/DownloadClientTests/Blackhole/TorrentBlackholeFixture.cs +++ b/src/NzbDrone.Core.Test/Download/DownloadClientTests/Blackhole/TorrentBlackholeFixture.cs @@ -4,6 +4,7 @@ using System.IO.Abstractions; using System.Linq; using System.Net; +using FizzWare.NBuilder; using FluentAssertions; using Moq; using NUnit.Framework; @@ -26,6 +27,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(); @@ -248,7 +254,7 @@ public void RemoveItem_should_delete_file() .Setup(c => c.FileExists(It.IsAny())) .Returns(true); - Subject.RemoveItem("_Droned.S01E01.Pilot.1080p.WEB-DL-DRONE_0", true); + Subject.RemoveItem(_downloadClientItem, true); Mocker.GetMock() .Verify(c => c.DeleteFile(It.IsAny()), Times.Once()); @@ -263,7 +269,7 @@ public void RemoveItem_should_delete_directory() .Setup(c => c.FolderExists(It.IsAny())) .Returns(true); - Subject.RemoveItem("_Droned.S01E01.Pilot.1080p.WEB-DL-DRONE_0", true); + Subject.RemoveItem(_downloadClientItem, true); Mocker.GetMock() .Verify(c => c.DeleteFolder(It.IsAny(), true), Times.Once()); @@ -272,7 +278,7 @@ public void RemoveItem_should_delete_directory() [Test] public void RemoveItem_should_ignore_if_unknown_item() { - Subject.RemoveItem("_Droned.S01E01.Pilot.1080p.WEB-DL-DRONE_0", true); + Subject.RemoveItem(_downloadClientItem, true); Mocker.GetMock() .Verify(c => c.DeleteFile(It.IsAny()), Times.Never()); @@ -286,7 +292,7 @@ public void RemoveItem_should_throw_if_deleteData_is_false() { GivenCompletedItem(); - Assert.Throws(() => Subject.RemoveItem("_Droned.S01E01.Pilot.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 cdfda0358..c0ce7f846 100644 --- a/src/NzbDrone.Core.Test/Download/DownloadClientTests/Blackhole/UsenetBlackholeFixture.cs +++ b/src/NzbDrone.Core.Test/Download/DownloadClientTests/Blackhole/UsenetBlackholeFixture.cs @@ -4,6 +4,7 @@ using System.IO.Abstractions; using System.Linq; using System.Net; +using FizzWare.NBuilder; using FluentAssertions; using Moq; using NUnit.Framework; @@ -22,6 +23,7 @@ public class UsenetBlackholeFixture : DownloadClientFixtureBase protected string _completedDownloadFolder; protected string _blackholeFolder; protected string _filePath; + protected DownloadClientItem _downloadClientItem; [SetUp] public void Setup() @@ -30,6 +32,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(); @@ -147,7 +153,7 @@ public void RemoveItem_should_delete_file() .Setup(c => c.FileExists(It.IsAny())) .Returns(true); - Subject.RemoveItem("_Droned.S01E01.Pilot.1080p.WEB-DL-DRONE_0", true); + Subject.RemoveItem(_downloadClientItem, true); Mocker.GetMock() .Verify(c => c.DeleteFile(It.IsAny()), Times.Once()); @@ -162,7 +168,7 @@ public void RemoveItem_should_delete_directory() .Setup(c => c.FolderExists(It.IsAny())) .Returns(true); - Subject.RemoveItem("_Droned.S01E01.Pilot.1080p.WEB-DL-DRONE_0", true); + Subject.RemoveItem(_downloadClientItem, true); Mocker.GetMock() .Verify(c => c.DeleteFolder(It.IsAny(), true), Times.Once()); @@ -171,7 +177,7 @@ public void RemoveItem_should_delete_directory() [Test] public void RemoveItem_should_ignore_if_unknown_item() { - Subject.RemoveItem("_Droned.S01E01.Pilot.1080p.WEB-DL-DRONE_0", true); + Subject.RemoveItem(_downloadClientItem, true); Mocker.GetMock() .Verify(c => c.DeleteFile(It.IsAny()), Times.Never()); @@ -185,7 +191,7 @@ public void RemoveItem_should_throw_if_deleteData_is_false() { GivenCompletedItem(); - Assert.Throws(() => Subject.RemoveItem("_Droned.S01E01.Pilot.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 c7aeee715..675067ca3 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 2565a01b4..acfac7f95 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 RemoteBook _remoteBook; + private DownloadClientItem _downloadClientItem; [SetUp] public void Setup() @@ -37,6 +39,10 @@ public void Setup() _remoteBook.ParsedBookInfo = new ParsedBookInfo(); + _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 { @@ -78,7 +84,7 @@ public void should_throw_if_discography_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 f1fbc197c..34c6cc966 100644 --- a/src/NzbDrone.Core.Test/Download/DownloadClientTests/SabnzbdTests/SabnzbdFixture.cs +++ b/src/NzbDrone.Core.Test/Download/DownloadClientTests/SabnzbdTests/SabnzbdFixture.cs @@ -24,6 +24,7 @@ public class SabnzbdFixture : DownloadClientFixtureBase private SabnzbdHistory _completed; private SabnzbdConfig _config; private SabnzbdFullStatus _fullStatus; + private DownloadClientItem _downloadClientItem; [SetUp] public void Setup() @@ -101,6 +102,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"); @@ -594,7 +599,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); @@ -621,7 +626,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); @@ -648,7 +653,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); @@ -675,7 +680,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 58980cc46..375cd9082 100644 --- a/src/NzbDrone.Core/Download/Clients/Blackhole/TorrentBlackhole.cs +++ b/src/NzbDrone.Core/Download/Clients/Blackhole/TorrentBlackhole.cs @@ -105,14 +105,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 4c37b4182..2e6f71f05 100644 --- a/src/NzbDrone.Core/Download/Clients/Blackhole/UsenetBlackhole.cs +++ b/src/NzbDrone.Core/Download/Clients/Blackhole/UsenetBlackhole.cs @@ -77,14 +77,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 3d0fd8770..d9d12dab7 100644 --- a/src/NzbDrone.Core/Download/Clients/Deluge/Deluge.cs +++ b/src/NzbDrone.Core/Download/Clients/Deluge/Deluge.cs @@ -188,9 +188,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 1980bfa8c..007ebae33 100644 --- a/src/NzbDrone.Core/Download/Clients/DownloadStation/TorrentDownloadStation.cs +++ b/src/NzbDrone.Core/Download/Clients/DownloadStation/TorrentDownloadStation.cs @@ -132,15 +132,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 457e02019..209e20ace 100644 --- a/src/NzbDrone.Core/Download/Clients/DownloadStation/UsenetDownloadStation.cs +++ b/src/NzbDrone.Core/Download/Clients/DownloadStation/UsenetDownloadStation.cs @@ -156,15 +156,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(RemoteBook remoteBook, 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 7c7ce0fe0..8e254b739 100644 --- a/src/NzbDrone.Core/Download/Clients/Flood/Flood.cs +++ b/src/NzbDrone.Core/Download/Clients/Flood/Flood.cs @@ -193,9 +193,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 43639bf34..47dd1b0a9 100644 --- a/src/NzbDrone.Core/Download/Clients/Hadouken/Hadouken.cs +++ b/src/NzbDrone.Core/Download/Clients/Hadouken/Hadouken.cs @@ -96,15 +96,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 ef67006ec..f49e9c2ac 100644 --- a/src/NzbDrone.Core/Download/Clients/NzbVortex/NzbVortex.cs +++ b/src/NzbDrone.Core/Download/Clients/NzbVortex/NzbVortex.cs @@ -110,19 +110,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 654358764..12347a63b 100644 --- a/src/NzbDrone.Core/Download/Clients/Nzbget/Nzbget.cs +++ b/src/NzbDrone.Core/Download/Clients/Nzbget/Nzbget.cs @@ -192,14 +192,14 @@ public override IEnumerable GetItems() return GetQueue().Concat(GetHistory()).Where(downloadClientItem => downloadClientItem.Category == Settings.MusicCategory); } - 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 6b3c3ace5..e414a8f10 100644 --- a/src/NzbDrone.Core/Download/Clients/Pneumatic/Pneumatic.cs +++ b/src/NzbDrone.Core/Download/Clients/Pneumatic/Pneumatic.cs @@ -97,7 +97,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 d070d0c79..51025b79d 100644 --- a/src/NzbDrone.Core/Download/Clients/QBittorrent/QBittorrent.cs +++ b/src/NzbDrone.Core/Download/Clients/QBittorrent/QBittorrent.cs @@ -223,9 +223,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 2be1c7887..1fe9ae55d 100644 --- a/src/NzbDrone.Core/Download/Clients/Sabnzbd/Sabnzbd.cs +++ b/src/NzbDrone.Core/Download/Clients/Sabnzbd/Sabnzbd.cs @@ -192,47 +192,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 f1a67a8c8..852a72de2 100644 --- a/src/NzbDrone.Core/Download/Clients/Transmission/TransmissionBase.cs +++ b/src/NzbDrone.Core/Download/Clients/Transmission/TransmissionBase.cs @@ -157,9 +157,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 b60ea1b1f..d287e0c67 100644 --- a/src/NzbDrone.Core/Download/Clients/Vuze/Vuze.cs +++ b/src/NzbDrone.Core/Download/Clients/Vuze/Vuze.cs @@ -24,9 +24,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 d3b1dc904..63dbcf52e 100644 --- a/src/NzbDrone.Core/Download/Clients/rTorrent/RTorrent.cs +++ b/src/NzbDrone.Core/Download/Clients/rTorrent/RTorrent.cs @@ -161,14 +161,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 4dad12922..3f1f2b262 100644 --- a/src/NzbDrone.Core/Download/Clients/uTorrent/UTorrent.cs +++ b/src/NzbDrone.Core/Download/Clients/uTorrent/UTorrent.cs @@ -206,9 +206,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 fa2d94416..f33366a9f 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.Parser.Model; @@ -68,20 +67,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 83e8509c7..93c7a1cbb 100644 --- a/src/NzbDrone.Core/Download/IDownloadClient.cs +++ b/src/NzbDrone.Core/Download/IDownloadClient.cs @@ -12,7 +12,7 @@ public interface IDownloadClient : IProvider string Download(RemoteBook remoteBook); 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/Readarr.Api.V1/Queue/QueueController.cs b/src/Readarr.Api.V1/Queue/QueueController.cs index e4c76187e..a4db4b6ec 100644 --- a/src/Readarr.Api.V1/Queue/QueueController.cs +++ b/src/Readarr.Api.V1/Queue/QueueController.cs @@ -218,7 +218,7 @@ private TrackedDownload Remove(int id, bool removeFromClient, bool blacklist, bo throw new BadRequestException(); } - downloadClient.RemoveItem(trackedDownload.DownloadItem.DownloadId, true); + downloadClient.RemoveItem(trackedDownload.DownloadItem, true); } if (blacklist)