Files
csob/Client/CsobApiAccessor.cs
T
JiriUhlir 09db30a3ca first
2026-06-18 11:05:46 +02:00

43 lines
1.3 KiB
C#

using Csob.Configuration;
using Csob.Credentials;
namespace Csob.Client;
/// <summary>
/// Scoped accessor that resolves the credentials for the current request and lazily builds a
/// single <see cref="CsobApiClient"/> (bound to the request's mutual-TLS client) shared by all
/// services handling that request.
/// </summary>
public sealed class CsobApiAccessor
{
private readonly RequestCredentialsProvider _credentialsProvider;
private readonly CsobHttpClientProvider _httpClientProvider;
private readonly CsobSettings _settings;
private CsobApiClient? _client;
public CsobApiAccessor(
RequestCredentialsProvider credentialsProvider,
CsobHttpClientProvider httpClientProvider,
CsobSettings settings)
{
_credentialsProvider = credentialsProvider;
_httpClientProvider = httpClientProvider;
_settings = settings;
}
public CsobApiClient Client
{
get
{
if (_client is null)
{
var credentials = _credentialsProvider.Resolve();
var http = _httpClientProvider.GetClient(credentials.Certificate!);
_client = new CsobApiClient(http, credentials, _settings);
}
return _client;
}
}
}