mirror of
https://github.com/lidarr/lidarr.git
synced 2025-08-19 21:13:28 -07:00
Fixed: False Positives for RemotePath check with Deluge
This commit is contained in:
parent
bb6cdfef43
commit
44819196bc
5 changed files with 62 additions and 3 deletions
|
@ -6,6 +6,7 @@ using NUnit.Framework;
|
||||||
using NzbDrone.Common.Disk;
|
using NzbDrone.Common.Disk;
|
||||||
using NzbDrone.Common.EnsureThat;
|
using NzbDrone.Common.EnsureThat;
|
||||||
using NzbDrone.Common.EnvironmentInfo;
|
using NzbDrone.Common.EnvironmentInfo;
|
||||||
|
using NzbDrone.Core.Configuration;
|
||||||
using NzbDrone.Core.Download;
|
using NzbDrone.Core.Download;
|
||||||
using NzbDrone.Core.Download.Clients;
|
using NzbDrone.Core.Download.Clients;
|
||||||
using NzbDrone.Core.HealthCheck.Checks;
|
using NzbDrone.Core.HealthCheck.Checks;
|
||||||
|
@ -70,6 +71,10 @@ namespace NzbDrone.Core.Test.HealthCheck.Checks
|
||||||
.Setup(s => s.GetDownloadClients())
|
.Setup(s => s.GetDownloadClients())
|
||||||
.Returns(new IDownloadClient[] { _downloadClient.Object });
|
.Returns(new IDownloadClient[] { _downloadClient.Object });
|
||||||
|
|
||||||
|
Mocker.GetMock<IConfigService>()
|
||||||
|
.Setup(s => s.EnableCompletedDownloadHandling)
|
||||||
|
.Returns(true);
|
||||||
|
|
||||||
Mocker.GetMock<IDiskProvider>()
|
Mocker.GetMock<IDiskProvider>()
|
||||||
.Setup(x => x.FolderExists(It.IsAny<string>()))
|
.Setup(x => x.FolderExists(It.IsAny<string>()))
|
||||||
.Returns((string path) =>
|
.Returns((string path) =>
|
||||||
|
|
|
@ -196,13 +196,22 @@ namespace NzbDrone.Core.Download.Clients.Deluge
|
||||||
public override DownloadClientInfo GetStatus()
|
public override DownloadClientInfo GetStatus()
|
||||||
{
|
{
|
||||||
var config = _proxy.GetConfig(Settings);
|
var config = _proxy.GetConfig(Settings);
|
||||||
|
var label = _proxy.GetLabelOptions(Settings);
|
||||||
|
OsPath destDir;
|
||||||
|
|
||||||
var destDir = new OsPath(config.GetValueOrDefault("download_location") as string);
|
if (label != null && label.ApplyMoveCompleted && label.MoveCompleted)
|
||||||
|
{
|
||||||
if (config.GetValueOrDefault("move_completed", false).ToString() == "True")
|
// if label exists and a label completed path exists and is enabled use it instead of global
|
||||||
|
destDir = new OsPath(label.MoveCompletedPath);
|
||||||
|
}
|
||||||
|
else if (config.GetValueOrDefault("move_completed", false).ToString() == "True")
|
||||||
{
|
{
|
||||||
destDir = new OsPath(config.GetValueOrDefault("move_completed_path") as string);
|
destDir = new OsPath(config.GetValueOrDefault("move_completed_path") as string);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
destDir = new OsPath(config.GetValueOrDefault("download_location") as string);
|
||||||
|
}
|
||||||
|
|
||||||
var status = new DownloadClientInfo
|
var status = new DownloadClientInfo
|
||||||
{
|
{
|
||||||
|
|
21
src/NzbDrone.Core/Download/Clients/Deluge/DelugeLabel.cs
Normal file
21
src/NzbDrone.Core/Download/Clients/Deluge/DelugeLabel.cs
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
|
namespace NzbDrone.Core.Download.Clients.Deluge
|
||||||
|
{
|
||||||
|
public class DelugeLabel
|
||||||
|
{
|
||||||
|
[JsonProperty(PropertyName = "apply_move_completed")]
|
||||||
|
public bool ApplyMoveCompleted { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty(PropertyName = "move_completed")]
|
||||||
|
public bool MoveCompleted { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty(PropertyName = "move_completed_path")]
|
||||||
|
public string MoveCompletedPath { get; set; }
|
||||||
|
}
|
||||||
|
}
|
|
@ -19,6 +19,7 @@ namespace NzbDrone.Core.Download.Clients.Deluge
|
||||||
string[] GetAvailablePlugins(DelugeSettings settings);
|
string[] GetAvailablePlugins(DelugeSettings settings);
|
||||||
string[] GetEnabledPlugins(DelugeSettings settings);
|
string[] GetEnabledPlugins(DelugeSettings settings);
|
||||||
string[] GetAvailableLabels(DelugeSettings settings);
|
string[] GetAvailableLabels(DelugeSettings settings);
|
||||||
|
DelugeLabel GetLabelOptions(DelugeSettings settings);
|
||||||
void SetTorrentLabel(string hash, string label, DelugeSettings settings);
|
void SetTorrentLabel(string hash, string label, DelugeSettings settings);
|
||||||
void SetTorrentConfiguration(string hash, string key, object value, DelugeSettings settings);
|
void SetTorrentConfiguration(string hash, string key, object value, DelugeSettings settings);
|
||||||
void SetTorrentSeedingConfiguration(string hash, TorrentSeedConfiguration seedConfiguration, DelugeSettings settings);
|
void SetTorrentSeedingConfiguration(string hash, TorrentSeedConfiguration seedConfiguration, DelugeSettings settings);
|
||||||
|
@ -156,6 +157,13 @@ namespace NzbDrone.Core.Download.Clients.Deluge
|
||||||
return response;
|
return response;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public DelugeLabel GetLabelOptions(DelugeSettings settings)
|
||||||
|
{
|
||||||
|
var response = ProcessRequest<DelugeLabel>(settings, "label.get_options", settings.MusicCategory);
|
||||||
|
|
||||||
|
return response;
|
||||||
|
}
|
||||||
|
|
||||||
public void SetTorrentConfiguration(string hash, string key, object value, DelugeSettings settings)
|
public void SetTorrentConfiguration(string hash, string key, object value, DelugeSettings settings)
|
||||||
{
|
{
|
||||||
var arguments = new Dictionary<string, object>();
|
var arguments = new Dictionary<string, object>();
|
||||||
|
|
|
@ -5,6 +5,7 @@ using NzbDrone.Common.Disk;
|
||||||
using NzbDrone.Common.EnvironmentInfo;
|
using NzbDrone.Common.EnvironmentInfo;
|
||||||
using NzbDrone.Common.Extensions;
|
using NzbDrone.Common.Extensions;
|
||||||
using NzbDrone.Common.Messaging;
|
using NzbDrone.Common.Messaging;
|
||||||
|
using NzbDrone.Core.Configuration;
|
||||||
using NzbDrone.Core.Datastore.Events;
|
using NzbDrone.Core.Datastore.Events;
|
||||||
using NzbDrone.Core.Download;
|
using NzbDrone.Core.Download;
|
||||||
using NzbDrone.Core.Download.Clients;
|
using NzbDrone.Core.Download.Clients;
|
||||||
|
@ -24,22 +25,31 @@ namespace NzbDrone.Core.HealthCheck.Checks
|
||||||
{
|
{
|
||||||
private readonly IDiskProvider _diskProvider;
|
private readonly IDiskProvider _diskProvider;
|
||||||
private readonly IProvideDownloadClient _downloadClientProvider;
|
private readonly IProvideDownloadClient _downloadClientProvider;
|
||||||
|
private readonly IConfigService _configService;
|
||||||
private readonly Logger _logger;
|
private readonly Logger _logger;
|
||||||
private readonly IOsInfo _osInfo;
|
private readonly IOsInfo _osInfo;
|
||||||
|
|
||||||
public RemotePathMappingCheck(IDiskProvider diskProvider,
|
public RemotePathMappingCheck(IDiskProvider diskProvider,
|
||||||
IProvideDownloadClient downloadClientProvider,
|
IProvideDownloadClient downloadClientProvider,
|
||||||
|
IConfigService configService,
|
||||||
IOsInfo osInfo,
|
IOsInfo osInfo,
|
||||||
Logger logger)
|
Logger logger)
|
||||||
{
|
{
|
||||||
_diskProvider = diskProvider;
|
_diskProvider = diskProvider;
|
||||||
_downloadClientProvider = downloadClientProvider;
|
_downloadClientProvider = downloadClientProvider;
|
||||||
|
_configService = configService;
|
||||||
_logger = logger;
|
_logger = logger;
|
||||||
_osInfo = osInfo;
|
_osInfo = osInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override HealthCheck Check()
|
public override HealthCheck Check()
|
||||||
{
|
{
|
||||||
|
// We don't care about client folders if we are not handling completed files
|
||||||
|
if (!_configService.EnableCompletedDownloadHandling)
|
||||||
|
{
|
||||||
|
return new HealthCheck(GetType());
|
||||||
|
}
|
||||||
|
|
||||||
var clients = _downloadClientProvider.GetDownloadClients();
|
var clients = _downloadClientProvider.GetDownloadClients();
|
||||||
|
|
||||||
foreach (var client in clients)
|
foreach (var client in clients)
|
||||||
|
@ -101,6 +111,12 @@ namespace NzbDrone.Core.HealthCheck.Checks
|
||||||
|
|
||||||
public HealthCheck Check(IEvent message)
|
public HealthCheck Check(IEvent message)
|
||||||
{
|
{
|
||||||
|
// We don't care about client folders if we are not handling completed files
|
||||||
|
if (!_configService.EnableCompletedDownloadHandling)
|
||||||
|
{
|
||||||
|
return new HealthCheck(GetType());
|
||||||
|
}
|
||||||
|
|
||||||
if (typeof(TrackImportFailedEvent).IsAssignableFrom(message.GetType()))
|
if (typeof(TrackImportFailedEvent).IsAssignableFrom(message.GetType()))
|
||||||
{
|
{
|
||||||
var failureMessage = (TrackImportFailedEvent)message;
|
var failureMessage = (TrackImportFailedEvent)message;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue