From a341c9f1736b22a1c4fb743ba9c0869c94ca9157 Mon Sep 17 00:00:00 2001 From: Robert Dailey Date: Sat, 16 Dec 2023 15:23:22 -0600 Subject: [PATCH] fix: Fix validation regression for base_url and api_key Fixes #221 --- CHANGELOG.md | 1 + .../FluentValidation/IRuntimeValidationService.cs | 2 +- .../FluentValidation/RuntimeValidationService.cs | 8 +++----- src/Recyclarr.Config/Parsing/ConfigurationLoader.cs | 2 +- 4 files changed, 6 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4a304caf..b43328f9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Print more useful diagnostics when there's a connectivity problem to a service (e.g. incorrect `base_url`). +- Regression that prevented basic validation of `base_url` & `api_key`. ## [6.0.2] - 2023-10-20 diff --git a/src/Recyclarr.Common/FluentValidation/IRuntimeValidationService.cs b/src/Recyclarr.Common/FluentValidation/IRuntimeValidationService.cs index 90a9a18a..478d8596 100644 --- a/src/Recyclarr.Common/FluentValidation/IRuntimeValidationService.cs +++ b/src/Recyclarr.Common/FluentValidation/IRuntimeValidationService.cs @@ -4,5 +4,5 @@ namespace Recyclarr.Common.FluentValidation; public interface IRuntimeValidationService { - ValidationResult Validate(object instance, params string[] ruleSets); + ValidationResult Validate(object instance, params string[] additionalRuleSets); } diff --git a/src/Recyclarr.Common/FluentValidation/RuntimeValidationService.cs b/src/Recyclarr.Common/FluentValidation/RuntimeValidationService.cs index 7c48c78a..5f2cf2e0 100644 --- a/src/Recyclarr.Common/FluentValidation/RuntimeValidationService.cs +++ b/src/Recyclarr.Common/FluentValidation/RuntimeValidationService.cs @@ -22,17 +22,15 @@ public class RuntimeValidationService : IRuntimeValidationService .ToDictionary(x => x.Item2!.GetGenericArguments()[0], x => x.Item1); } - public ValidationResult Validate(object instance, params string[] ruleSets) + public ValidationResult Validate(object instance, params string[] additionalRuleSets) { if (!_validators.TryGetValue(instance.GetType(), out var validator)) { throw new ValidationException($"No validator is available for type: {instance.GetType().FullName}"); } - IValidatorSelector validatorSelector = ruleSets.Length != 0 - ? new RulesetValidatorSelector(ruleSets) - : new DefaultValidatorSelector(); - + var validatorSelector = + new RulesetValidatorSelector([RulesetValidatorSelector.DefaultRuleSetName, ..additionalRuleSets]); return validator.Validate(new ValidationContext(instance, new PropertyChain(), validatorSelector)); } } diff --git a/src/Recyclarr.Config/Parsing/ConfigurationLoader.cs b/src/Recyclarr.Config/Parsing/ConfigurationLoader.cs index 7f3358fb..bcbb6d5a 100644 --- a/src/Recyclarr.Config/Parsing/ConfigurationLoader.cs +++ b/src/Recyclarr.Config/Parsing/ConfigurationLoader.cs @@ -45,7 +45,7 @@ public class ConfigurationLoader( log.Warning("Configuration is empty"); } - if (!validator.Validate(config)) + if (!validator.Validate(config, YamlValidatorRuleSets.RootConfig)) { return Array.Empty(); }