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

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

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

Loading…
Cancel
Save