From 7185cc584471ea53f294e35e9ba47a79ec28b81f Mon Sep 17 00:00:00 2001 From: Robert Dailey Date: Fri, 20 Jan 2023 19:13:05 -0600 Subject: [PATCH] refactor: Fix various analysis issues --- src/Recyclarr.Common/DefaultEnvironment.cs | 4 ++-- src/Recyclarr.Common/IEnvironment.cs | 2 +- .../Config/Parsing/ConfigurationLoaderEnvVarTest.cs | 12 ++++++------ .../Config/Parsing/ConfigurationLoaderSecretsTest.cs | 2 +- .../Config/Parsing/ConfigurationLoaderTest.cs | 6 +++--- .../Config/Parsing/ConfigParser.cs | 4 ++-- .../{ConfigCollection.cs => ConfigRegistry.cs} | 4 ++-- .../Config/Parsing/ConfigurationLoader.cs | 6 +++--- .../Config/Parsing/IConfigCollection.cs | 9 --------- .../Config/Parsing/IConfigRegistry.cs | 9 +++++++++ .../Config/Parsing/IConfigurationLoader.cs | 6 +++--- .../Config/Services/IServiceConfiguration.cs | 8 ++++++++ .../Services/Processors/SyncProcessor.cs | 4 ++-- 13 files changed, 42 insertions(+), 34 deletions(-) rename src/Recyclarr.TrashLib/Config/Parsing/{ConfigCollection.cs => ConfigRegistry.cs} (78%) delete mode 100644 src/Recyclarr.TrashLib/Config/Parsing/IConfigCollection.cs create mode 100644 src/Recyclarr.TrashLib/Config/Parsing/IConfigRegistry.cs diff --git a/src/Recyclarr.Common/DefaultEnvironment.cs b/src/Recyclarr.Common/DefaultEnvironment.cs index 99490792..fb9bbac7 100644 --- a/src/Recyclarr.Common/DefaultEnvironment.cs +++ b/src/Recyclarr.Common/DefaultEnvironment.cs @@ -7,9 +7,9 @@ internal class DefaultEnvironment : IEnvironment return Environment.GetFolderPath(folder); } - public string GetFolderPath(Environment.SpecialFolder folder, Environment.SpecialFolderOption option) + public string GetFolderPath(Environment.SpecialFolder folder, Environment.SpecialFolderOption folderOption) { - return Environment.GetFolderPath(folder, option); + return Environment.GetFolderPath(folder, folderOption); } public string? GetEnvironmentVariable(string variable) diff --git a/src/Recyclarr.Common/IEnvironment.cs b/src/Recyclarr.Common/IEnvironment.cs index 86d7d25c..2a2a343d 100644 --- a/src/Recyclarr.Common/IEnvironment.cs +++ b/src/Recyclarr.Common/IEnvironment.cs @@ -3,6 +3,6 @@ public interface IEnvironment { public string GetFolderPath(Environment.SpecialFolder folder); - string GetFolderPath(Environment.SpecialFolder folder, Environment.SpecialFolderOption option); + string GetFolderPath(Environment.SpecialFolder folder, Environment.SpecialFolderOption folderOption); string? GetEnvironmentVariable(string variable); } diff --git a/src/Recyclarr.TrashLib.Tests/Config/Parsing/ConfigurationLoaderEnvVarTest.cs b/src/Recyclarr.TrashLib.Tests/Config/Parsing/ConfigurationLoaderEnvVarTest.cs index 4faf3468..924891c5 100644 --- a/src/Recyclarr.TrashLib.Tests/Config/Parsing/ConfigurationLoaderEnvVarTest.cs +++ b/src/Recyclarr.TrashLib.Tests/Config/Parsing/ConfigurationLoaderEnvVarTest.cs @@ -33,7 +33,7 @@ sonarr: var configCollection = sut.LoadFromStream(new StringReader(testYml)); - var config = configCollection.Get(SupportedServices.Sonarr); + var config = configCollection.GetConfigsOfType(SupportedServices.Sonarr); config.Should().BeEquivalentTo(new[] { new @@ -58,7 +58,7 @@ sonarr: var configCollection = sut.LoadFromStream(new StringReader(testYml)); - var config = configCollection.Get(SupportedServices.Sonarr); + var config = configCollection.GetConfigsOfType(SupportedServices.Sonarr); config.Should().BeEquivalentTo(new[] { new @@ -85,7 +85,7 @@ sonarr: var configCollection = sut.LoadFromStream(new StringReader(testYml)); - var config = configCollection.Get(SupportedServices.Sonarr); + var config = configCollection.GetConfigsOfType(SupportedServices.Sonarr); config.Should().BeEquivalentTo(new[] { new @@ -112,7 +112,7 @@ sonarr: var configCollection = sut.LoadFromStream(new StringReader(testYml)); - var config = configCollection.Get(SupportedServices.Sonarr); + var config = configCollection.GetConfigsOfType(SupportedServices.Sonarr); config.Should().BeEquivalentTo(new[] { new @@ -137,7 +137,7 @@ sonarr: var configCollection = sut.LoadFromStream(new StringReader(testYml)); - var config = configCollection.Get(SupportedServices.Sonarr); + var config = configCollection.GetConfigsOfType(SupportedServices.Sonarr); config.Should().BeEquivalentTo(new[] { new @@ -161,7 +161,7 @@ sonarr: var configCollection = sut.LoadFromStream(new StringReader(testYml)); - var config = configCollection.Get(SupportedServices.Sonarr); + var config = configCollection.GetConfigsOfType(SupportedServices.Sonarr); config.Should().BeEquivalentTo(new[] { new diff --git a/src/Recyclarr.TrashLib.Tests/Config/Parsing/ConfigurationLoaderSecretsTest.cs b/src/Recyclarr.TrashLib.Tests/Config/Parsing/ConfigurationLoaderSecretsTest.cs index c5ed5324..4a77b524 100644 --- a/src/Recyclarr.TrashLib.Tests/Config/Parsing/ConfigurationLoaderSecretsTest.cs +++ b/src/Recyclarr.TrashLib.Tests/Config/Parsing/ConfigurationLoaderSecretsTest.cs @@ -55,7 +55,7 @@ secret_rp: 1234567 }; var parsedSecret = configLoader.LoadFromStream(new StringReader(testYml), "sonarr"); - parsedSecret.Get(SupportedServices.Sonarr) + parsedSecret.GetConfigsOfType(SupportedServices.Sonarr) .Should().BeEquivalentTo(expected, o => o.Excluding(x => x.LineNumber)); } diff --git a/src/Recyclarr.TrashLib.Tests/Config/Parsing/ConfigurationLoaderTest.cs b/src/Recyclarr.TrashLib.Tests/Config/Parsing/ConfigurationLoaderTest.cs index df1ccb50..71c98ba0 100644 --- a/src/Recyclarr.TrashLib.Tests/Config/Parsing/ConfigurationLoaderTest.cs +++ b/src/Recyclarr.TrashLib.Tests/Config/Parsing/ConfigurationLoaderTest.cs @@ -81,10 +81,10 @@ public class ConfigurationLoaderTest : IntegrationFixture var loader = Resolve(); var actual = loader.LoadMany(fileData.Select(x => x.Item1)); - actual.Get(SupportedServices.Sonarr) + actual.GetConfigsOfType(SupportedServices.Sonarr) .Should().BeEquivalentTo(expectedSonarr); - actual.Get(SupportedServices.Radarr) + actual.GetConfigsOfType(SupportedServices.Radarr) .Should().BeEquivalentTo(expectedRadarr); } @@ -94,7 +94,7 @@ public class ConfigurationLoaderTest : IntegrationFixture var configLoader = Resolve(); var configs = configLoader.LoadFromStream(GetResourceData("Load_UsingStream_CorrectParsing.yml"), "sonarr"); - configs.Get(SupportedServices.Sonarr) + configs.GetConfigsOfType(SupportedServices.Sonarr) .Should().BeEquivalentTo(new List { new() diff --git a/src/Recyclarr.TrashLib/Config/Parsing/ConfigParser.cs b/src/Recyclarr.TrashLib/Config/Parsing/ConfigParser.cs index 02ffe8df..a3de3c1c 100644 --- a/src/Recyclarr.TrashLib/Config/Parsing/ConfigParser.cs +++ b/src/Recyclarr.TrashLib/Config/Parsing/ConfigParser.cs @@ -14,7 +14,7 @@ public class ConfigParser { private readonly ConfigValidationExecutor _validator; private readonly IDeserializer _deserializer; - private readonly ConfigCollection _configs = new(); + private readonly ConfigRegistry _configs = new(); private SupportedServices? _currentSection; private readonly Dictionary _configTypes = new() @@ -23,7 +23,7 @@ public class ConfigParser {SupportedServices.Radarr, typeof(RadarrConfiguration)} }; - public IConfigCollection Configs => _configs; + public IConfigRegistry Configs => _configs; public ConfigParser( IYamlSerializerFactory yamlFactory, diff --git a/src/Recyclarr.TrashLib/Config/Parsing/ConfigCollection.cs b/src/Recyclarr.TrashLib/Config/Parsing/ConfigRegistry.cs similarity index 78% rename from src/Recyclarr.TrashLib/Config/Parsing/ConfigCollection.cs rename to src/Recyclarr.TrashLib/Config/Parsing/ConfigRegistry.cs index 069d608b..3be726f8 100644 --- a/src/Recyclarr.TrashLib/Config/Parsing/ConfigCollection.cs +++ b/src/Recyclarr.TrashLib/Config/Parsing/ConfigRegistry.cs @@ -3,7 +3,7 @@ using Recyclarr.TrashLib.Config.Services; namespace Recyclarr.TrashLib.Config.Parsing; -public class ConfigCollection : IConfigCollection +public class ConfigRegistry : IConfigRegistry { private readonly Dictionary> _configs = new(); @@ -12,7 +12,7 @@ public class ConfigCollection : IConfigCollection _configs.GetOrCreate(configType).Add(config); } - public IReadOnlyCollection Get(SupportedServices serviceType) where T : ServiceConfiguration + public IReadOnlyCollection GetConfigsOfType(SupportedServices serviceType) where T : ServiceConfiguration { return _configs[serviceType].Cast().ToList(); } diff --git a/src/Recyclarr.TrashLib/Config/Parsing/ConfigurationLoader.cs b/src/Recyclarr.TrashLib/Config/Parsing/ConfigurationLoader.cs index 78055daf..688ad5e7 100644 --- a/src/Recyclarr.TrashLib/Config/Parsing/ConfigurationLoader.cs +++ b/src/Recyclarr.TrashLib/Config/Parsing/ConfigurationLoader.cs @@ -18,7 +18,7 @@ public class ConfigurationLoader : IConfigurationLoader _parser = parser; } - public IConfigCollection LoadMany(IEnumerable configFiles, string? desiredSection = null) + public IConfigRegistry LoadMany(IEnumerable configFiles, string? desiredSection = null) { foreach (var file in configFiles) { @@ -28,7 +28,7 @@ public class ConfigurationLoader : IConfigurationLoader return _parser.Configs; } - public IConfigCollection Load(IFileInfo file, string? desiredSection = null) + public IConfigRegistry Load(IFileInfo file, string? desiredSection = null) { _log.Debug("Loading config file: {File}", file); using var logScope = LogContext.PushProperty(LogProperty.Scope, file.Name); @@ -63,7 +63,7 @@ public class ConfigurationLoader : IConfigurationLoader return _parser.Configs; } - public IConfigCollection LoadFromStream(TextReader stream, string? desiredSection = null) + public IConfigRegistry LoadFromStream(TextReader stream, string? desiredSection = null) { var parser = new Parser(stream); diff --git a/src/Recyclarr.TrashLib/Config/Parsing/IConfigCollection.cs b/src/Recyclarr.TrashLib/Config/Parsing/IConfigCollection.cs deleted file mode 100644 index b72f4c73..00000000 --- a/src/Recyclarr.TrashLib/Config/Parsing/IConfigCollection.cs +++ /dev/null @@ -1,9 +0,0 @@ -using Recyclarr.TrashLib.Config.Services; - -namespace Recyclarr.TrashLib.Config.Parsing; - -public interface IConfigCollection -{ - IReadOnlyCollection Get(SupportedServices serviceType) where T : ServiceConfiguration; - bool DoesConfigExist(string name); -} diff --git a/src/Recyclarr.TrashLib/Config/Parsing/IConfigRegistry.cs b/src/Recyclarr.TrashLib/Config/Parsing/IConfigRegistry.cs new file mode 100644 index 00000000..bb85e370 --- /dev/null +++ b/src/Recyclarr.TrashLib/Config/Parsing/IConfigRegistry.cs @@ -0,0 +1,9 @@ +using Recyclarr.TrashLib.Config.Services; + +namespace Recyclarr.TrashLib.Config.Parsing; + +public interface IConfigRegistry +{ + IReadOnlyCollection GetConfigsOfType(SupportedServices serviceType) where T : ServiceConfiguration; + bool DoesConfigExist(string name); +} diff --git a/src/Recyclarr.TrashLib/Config/Parsing/IConfigurationLoader.cs b/src/Recyclarr.TrashLib/Config/Parsing/IConfigurationLoader.cs index ab7c2130..ba9fa350 100644 --- a/src/Recyclarr.TrashLib/Config/Parsing/IConfigurationLoader.cs +++ b/src/Recyclarr.TrashLib/Config/Parsing/IConfigurationLoader.cs @@ -4,7 +4,7 @@ namespace Recyclarr.TrashLib.Config.Parsing; public interface IConfigurationLoader { - IConfigCollection LoadMany(IEnumerable configFiles, string? desiredSection = null); - IConfigCollection Load(IFileInfo file, string? desiredSection = null); - IConfigCollection LoadFromStream(TextReader stream, string? desiredSection = null); + IConfigRegistry LoadMany(IEnumerable configFiles, string? desiredSection = null); + IConfigRegistry Load(IFileInfo file, string? desiredSection = null); + IConfigRegistry LoadFromStream(TextReader stream, string? desiredSection = null); } diff --git a/src/Recyclarr.TrashLib/Config/Services/IServiceConfiguration.cs b/src/Recyclarr.TrashLib/Config/Services/IServiceConfiguration.cs index 59df49e1..265bb9b9 100644 --- a/src/Recyclarr.TrashLib/Config/Services/IServiceConfiguration.cs +++ b/src/Recyclarr.TrashLib/Config/Services/IServiceConfiguration.cs @@ -1,10 +1,18 @@ +using System.Diagnostics.CodeAnalysis; + namespace Recyclarr.TrashLib.Config.Services; public interface IServiceConfiguration { string ServiceName { get; } + string? InstanceName { get; } + + [SuppressMessage("Design", "CA1056:URI-like properties should not be strings", + Justification = "This is not treated as a true URI until later")] string BaseUrl { get; } + string ApiKey { get; } + bool DeleteOldCustomFormats { get; } } diff --git a/src/Recyclarr.TrashLib/Services/Processors/SyncProcessor.cs b/src/Recyclarr.TrashLib/Services/Processors/SyncProcessor.cs index 489df647..7ac3be08 100644 --- a/src/Recyclarr.TrashLib/Services/Processors/SyncProcessor.cs +++ b/src/Recyclarr.TrashLib/Services/Processors/SyncProcessor.cs @@ -71,10 +71,10 @@ public class SyncProcessor : ISyncProcessor } private async Task ProcessService( - SupportedServices service, ISyncSettings settings, IConfigCollection configs) + SupportedServices service, ISyncSettings settings, IConfigRegistry configs) where TConfig : ServiceConfiguration { - var serviceConfigs = configs.Get(service); + var serviceConfigs = configs.GetConfigsOfType(service); // If any config names are null, that means user specified array-style (deprecated) instances. if (serviceConfigs.Any(x => x.InstanceName is null))