using System; using Microsoft.Extensions.Http; using Microsoft.Extensions.Options; using StellaOps.Cryptography.Plugin.SimRemote; namespace StellaOps.Cryptography.DependencyInjection; internal sealed class SimRemoteHttpClientOptionsConfiguration : IConfigureNamedOptions { private readonly IOptionsMonitor _options; public SimRemoteHttpClientOptionsConfiguration(IOptionsMonitor options) { _options = options ?? throw new ArgumentNullException(nameof(options)); } public void Configure(HttpClientFactoryOptions options) { Configure(Options.DefaultName, options); } public void Configure(string? name, HttpClientFactoryOptions options) { if (!string.Equals(name, CryptoHttpClientNames.SimRemote, StringComparison.Ordinal)) { return; } options.HttpClientActions.Add(client => { var current = _options.CurrentValue; if (!string.IsNullOrWhiteSpace(current.BaseAddress)) { client.BaseAddress = new Uri(current.BaseAddress); } }); } }