using Microsoft.Extensions.Options; using VigilCare.Simulation; public sealed class SimulationClientFactory : ISimulationClientFactory { private readonly IHttpClientFactory _http; private readonly SimulationOptions _options; public SimulationClientFactory(IHttpClientFactory http, IOptions options) { _http = http; _options = options.Value; } public async Task CreateAsync(CancellationToken ct = default) { if (string.IsNullOrWhiteSpace(_options.RunnerPassword)) throw new InvalidOperationException( "Simulation:RunnerPassword is required when Simulation:Enabled is true."); var http = _http.CreateClient("simulation-loopback"); var client = new VigilCareApiClient(http); await client.LoginAsync(_options.RunnerUsername, _options.RunnerPassword); return client; } }