fix: Add a check for Sonarr v3 in the delete CFs command

json-serializing-nullable-fields-issue
Robert Dailey 9 months ago
parent f6465316d2
commit 4b3542fc7a

@ -1,6 +1,7 @@
using System.Diagnostics.CodeAnalysis;
using Recyclarr.Cli.Console.Settings;
using Recyclarr.Cli.Pipelines.CustomFormat.Api;
using Recyclarr.TrashLib.Compatibility.Sonarr;
using Recyclarr.TrashLib.Config;
using Recyclarr.TrashLib.Config.Services;
using Recyclarr.TrashLib.ExceptionTypes;
@ -15,22 +16,28 @@ public class DeleteCustomFormatsProcessor : IDeleteCustomFormatsProcessor
private readonly IAnsiConsole _console;
private readonly ICustomFormatService _api;
private readonly IConfigurationRegistry _configRegistry;
private readonly ISonarrCapabilityFetcher _sonarCapabilities;
public DeleteCustomFormatsProcessor(
ILogger log,
IAnsiConsole console,
ICustomFormatService api,
IConfigurationRegistry configRegistry)
IConfigurationRegistry configRegistry,
ISonarrCapabilityFetcher sonarCapabilities)
{
_log = log;
_console = console;
_api = api;
_configRegistry = configRegistry;
_sonarCapabilities = sonarCapabilities;
}
public async Task Process(IDeleteCustomFormatSettings settings)
{
var config = GetTargetConfig(settings);
await CheckCustomFormatSupport(config);
var cfs = await ObtainCustomFormats(config);
if (!settings.All)
@ -67,6 +74,18 @@ public class DeleteCustomFormatsProcessor : IDeleteCustomFormatsProcessor
await DeleteCustomFormats(cfs, config);
}
private async Task CheckCustomFormatSupport(IServiceConfiguration config)
{
if (config is SonarrConfiguration)
{
var capabilities = await _sonarCapabilities.GetCapabilities(config);
if (!capabilities.SupportsCustomFormats)
{
throw new ServiceIncompatibilityException("Custom formats are not supported in Sonarr v3");
}
}
}
[SuppressMessage("Design", "CA1031:Do not catch general exception types")]
private async Task DeleteCustomFormats(ICollection<CustomFormatData> cfs, IServiceConfiguration config)
{

Loading…
Cancel
Save