mirror of
https://github.com/lidarr/Lidarr
synced 2025-01-03 05:25:10 +00:00
New: Support for new SABnzbd history retention values
(cherry picked from commit e361f18837d98c089f7dc9c0190221ca8e2cf225)
This commit is contained in:
parent
f3a697ca68
commit
14716a1405
3 changed files with 72 additions and 14 deletions
|
@ -478,6 +478,37 @@ public void should_set_history_removes_completed_downloads_true(string historyRe
|
||||||
downloadClientInfo.RemovesCompletedDownloads.Should().BeTrue();
|
downloadClientInfo.RemovesCompletedDownloads.Should().BeTrue();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[TestCase("all", 0)]
|
||||||
|
[TestCase("days-archive", 15)]
|
||||||
|
[TestCase("days-delete", 15)]
|
||||||
|
public void should_set_history_removes_completed_downloads_false_for_separate_properties(string option, int number)
|
||||||
|
{
|
||||||
|
_config.Misc.history_retention_option = option;
|
||||||
|
_config.Misc.history_retention_number = number;
|
||||||
|
|
||||||
|
var downloadClientInfo = Subject.GetStatus();
|
||||||
|
|
||||||
|
downloadClientInfo.RemovesCompletedDownloads.Should().BeFalse();
|
||||||
|
}
|
||||||
|
|
||||||
|
[TestCase("number-archive", 10)]
|
||||||
|
[TestCase("number-delete", 10)]
|
||||||
|
[TestCase("number-archive", 0)]
|
||||||
|
[TestCase("number-delete", 0)]
|
||||||
|
[TestCase("days-archive", 3)]
|
||||||
|
[TestCase("days-delete", 3)]
|
||||||
|
[TestCase("all-archive", 0)]
|
||||||
|
[TestCase("all-delete", 0)]
|
||||||
|
public void should_set_history_removes_completed_downloads_true_for_separate_properties(string option, int number)
|
||||||
|
{
|
||||||
|
_config.Misc.history_retention_option = option;
|
||||||
|
_config.Misc.history_retention_number = number;
|
||||||
|
|
||||||
|
var downloadClientInfo = Subject.GetStatus();
|
||||||
|
|
||||||
|
downloadClientInfo.RemovesCompletedDownloads.Should().BeTrue();
|
||||||
|
}
|
||||||
|
|
||||||
[TestCase(@"Y:\nzbget\root", @"completed\downloads", @"vv", @"Y:\nzbget\root\completed\downloads", @"Y:\nzbget\root\completed\downloads\vv")]
|
[TestCase(@"Y:\nzbget\root", @"completed\downloads", @"vv", @"Y:\nzbget\root\completed\downloads", @"Y:\nzbget\root\completed\downloads\vv")]
|
||||||
[TestCase(@"Y:\nzbget\root", @"completed", @"vv", @"Y:\nzbget\root\completed", @"Y:\nzbget\root\completed\vv")]
|
[TestCase(@"Y:\nzbget\root", @"completed", @"vv", @"Y:\nzbget\root\completed", @"Y:\nzbget\root\completed\vv")]
|
||||||
[TestCase(@"/nzbget/root", @"completed/downloads", @"vv", @"/nzbget/root/completed/downloads", @"/nzbget/root/completed/downloads/vv")]
|
[TestCase(@"/nzbget/root", @"completed/downloads", @"vv", @"/nzbget/root/completed/downloads", @"/nzbget/root/completed/downloads/vv")]
|
||||||
|
|
|
@ -276,20 +276,7 @@ public override DownloadClientInfo GetStatus()
|
||||||
status.OutputRootFolders = new List<OsPath> { _remotePathMappingService.RemapRemoteToLocal(Settings.Host, category.FullPath) };
|
status.OutputRootFolders = new List<OsPath> { _remotePathMappingService.RemapRemoteToLocal(Settings.Host, category.FullPath) };
|
||||||
}
|
}
|
||||||
|
|
||||||
if (config.Misc.history_retention.IsNullOrWhiteSpace())
|
status.RemovesCompletedDownloads = RemovesCompletedDownloads(config);
|
||||||
{
|
|
||||||
status.RemovesCompletedDownloads = false;
|
|
||||||
}
|
|
||||||
else if (config.Misc.history_retention.EndsWith("d"))
|
|
||||||
{
|
|
||||||
int.TryParse(config.Misc.history_retention.AsSpan(0, config.Misc.history_retention.Length - 1),
|
|
||||||
out var daysRetention);
|
|
||||||
status.RemovesCompletedDownloads = daysRetention < 14;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
status.RemovesCompletedDownloads = config.Misc.history_retention != "0";
|
|
||||||
}
|
|
||||||
|
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
@ -531,6 +518,44 @@ private bool ContainsCategory(IEnumerable<string> categories, string category)
|
||||||
return categories.Contains(category);
|
return categories.Contains(category);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private bool RemovesCompletedDownloads(SabnzbdConfig config)
|
||||||
|
{
|
||||||
|
var retention = config.Misc.history_retention;
|
||||||
|
var option = config.Misc.history_retention_option;
|
||||||
|
var number = config.Misc.history_retention_number;
|
||||||
|
|
||||||
|
switch (option)
|
||||||
|
{
|
||||||
|
case "all":
|
||||||
|
return false;
|
||||||
|
case "number-archive":
|
||||||
|
case "number-delete":
|
||||||
|
return true;
|
||||||
|
case "days-archive":
|
||||||
|
case "days-delete":
|
||||||
|
return number < 14;
|
||||||
|
case "all-archive":
|
||||||
|
case "all-delete":
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: Remove these checks once support for SABnzbd < 4.3 is removed
|
||||||
|
|
||||||
|
if (retention.IsNullOrWhiteSpace())
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (retention.EndsWith("d"))
|
||||||
|
{
|
||||||
|
int.TryParse(config.Misc.history_retention.AsSpan(0, config.Misc.history_retention.Length - 1),
|
||||||
|
out var daysRetention);
|
||||||
|
return daysRetention < 14;
|
||||||
|
}
|
||||||
|
|
||||||
|
return retention != "0";
|
||||||
|
}
|
||||||
|
|
||||||
private bool ValidatePath(DownloadClientItem downloadClientItem)
|
private bool ValidatePath(DownloadClientItem downloadClientItem)
|
||||||
{
|
{
|
||||||
var downloadItemOutputPath = downloadClientItem.OutputPath;
|
var downloadItemOutputPath = downloadClientItem.OutputPath;
|
||||||
|
|
|
@ -30,6 +30,8 @@ public class SabnzbdConfigMisc
|
||||||
public bool enable_date_sorting { get; set; }
|
public bool enable_date_sorting { get; set; }
|
||||||
public bool pre_check { get; set; }
|
public bool pre_check { get; set; }
|
||||||
public string history_retention { get; set; }
|
public string history_retention { get; set; }
|
||||||
|
public string history_retention_option { get; set; }
|
||||||
|
public int history_retention_number { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class SabnzbdCategory
|
public class SabnzbdCategory
|
||||||
|
|
Loading…
Reference in a new issue