public void RegisterTypes()

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;
                });
        }