using Microsoft.Extensions.Options; using StellaOps.DependencyInjection.Validation; namespace StellaOps.Plugin.MyConnector; /// /// Validates configuration. /// public sealed class MyConnectorOptionsValidator : OptionsValidatorBase { protected override string SectionPrefix => MyConnectorOptions.SectionName; protected override void ValidateOptions(MyConnectorOptions options, ValidationContext context) { context .RequireNotEmpty(options.BaseUrl, nameof(options.BaseUrl)) .RequirePositive(options.TimeoutSeconds, nameof(options.TimeoutSeconds)) .RequireInRange(options.MaxRetries, nameof(options.MaxRetries), 0, 10); // Validate URL format if (!string.IsNullOrWhiteSpace(options.BaseUrl) && !Uri.TryCreate(options.BaseUrl, UriKind.Absolute, out _)) { context.AddError(nameof(options.BaseUrl), "must be a valid absolute URL."); } } }