in src/Covi/Services/Platform/PlatformModule.cs [35:74]
public void RegisterTypes(IContainerRegistry containerRegistry)
{
containerRegistry.RegisterSingleton<IConnectivityService, ConnectivityService>();
containerRegistry.RegisterSingleton<IHttpExceptionContextRetriever, HttpExceptionContextRetriever>();
containerRegistry.RegisterSingleton<IErrorResponseHandler, ErrorResponseHandler>();
containerRegistry.RegisterSingleton<IRequestIdGenerator, RequestIdGenerator>();
containerRegistry.RegisterSingleton<ISessionContainer, SessionContainer>();
containerRegistry.RegisterSingleton<ITokenRefreshStrategy, TokenRefreshStrategy>();
containerRegistry.RegisterSingletonFromDelegate<ITokenRefreshInvoker>(provider =>
{
var options = provider.GetRequiredService<Client.Services.PlatformClientOptions>();
var handler = provider.GetRequiredService<Services.Http.IHttpClientHandlerProvider>()
.GetPlatformHandler();
var handlers = new DelegatingHandler[]
{
new RequestIdDelegatingHandler(provider.GetRequiredService<IRequestIdGenerator>()),
};
var client = Client.Services.ClientBuilder.Create(options, handler, handlers);
return new TokenRefreshInvoker(client);
});
containerRegistry.RegisterSingletonFromDelegate<Covi.Client.Services.IPlatformClient>(
(provider) =>
{
var handler = provider.GetRequiredService<Services.Http.IHttpClientHandlerProvider>()
.GetPlatformHandler();
var options = provider.GetRequiredService<Client.Services.PlatformClientOptions>();
var handlers = new DelegatingHandler[]
{
new AuthDelegatingHandler(provider.GetRequiredService<ISessionContainer>()),
new TokenRefreshDelegatingHandler(
provider.GetRequiredService<ISessionContainer>(),
provider.GetRequiredService<ITokenRefreshStrategy>()),
new RequestIdDelegatingHandler(provider.GetRequiredService<IRequestIdGenerator>()),
};
var client = Client.Services.ClientBuilder.Create(options, handler, handlers);
return client;
});
}