This commit is contained in:
JiriUhlir
2026-06-18 11:05:46 +02:00
parent f44ffae9fc
commit 09db30a3ca
84 changed files with 3952 additions and 15 deletions
+42
View File
@@ -0,0 +1,42 @@
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;
}
}
}