private static void InitApiCallbackClient(AcTestContext context) { TestContext.Out.WriteLine("Initialising API Callback Client"); var httpClient = new HttpClient(); httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("bearer", context.Tokens.NotificationCallbackBearerToken); var baseUrl = context.Config.ServicesConfig.NotificationApiUrl; context.ApiCallbackClient = NotificationApiClient.GetClient(baseUrl, httpClient); }
public static IServiceCollection AddCustomTypes(this IServiceCollection serviceCollection) { serviceCollection.AddHttpContextAccessor(); serviceCollection.AddMemoryCache(); serviceCollection.AddTransient <HearingApiTokenHandler>(); serviceCollection.AddTransient <UserApiTokenHandler>(); serviceCollection.AddTransient <VideoApiTokenHandler>(); serviceCollection.AddTransient <NotificationApiTokenHandler>(); serviceCollection.AddTransient <IHearingsService, HearingsService>(); serviceCollection.AddScoped <ITokenProvider, TokenProvider>(); serviceCollection.AddScoped <IUserAccountService, UserAccountService>(); serviceCollection.AddScoped <AzureAdConfiguration>(); serviceCollection.AddSingleton <IClaimsCacheProvider, MemoryClaimsCacheProvider>(); serviceCollection.AddScoped <ICachedUserClaimBuilder, CachedUserClaimBuilder>(); serviceCollection.AddSingleton <IPollyRetryService, PollyRetryService>(); // Build the hearings api client using a reusable HttpClient factory and predefined base url var container = serviceCollection.BuildServiceProvider(); var settings = container.GetService <IOptions <ServiceConfiguration> >().Value; serviceCollection.AddHttpClient <IBookingsApiClient, BookingsApiClient>() .AddHttpMessageHandler(() => container.GetService <HearingApiTokenHandler>()) .AddTypedClient(httpClient => { var client = BookingsApiClient.GetClient(httpClient); client.BaseUrl = settings.BookingsApiUrl; client.ReadResponseAsString = true; return((IBookingsApiClient)client); }); serviceCollection.AddHttpClient <IUserApiClient, UserApiClient>() .AddHttpMessageHandler(() => container.GetService <UserApiTokenHandler>()) .AddTypedClient(httpClient => { var client = UserApiClient.GetClient(httpClient); client.BaseUrl = settings.UserApiUrl; client.ReadResponseAsString = true; return((IUserApiClient)client); }); serviceCollection.AddHttpClient <IVideoApiClient, VideoApiClient>() .AddHttpMessageHandler(() => container.GetService <VideoApiTokenHandler>()) .AddTypedClient(httpClient => { var client = VideoApiClient.GetClient(httpClient); client.BaseUrl = settings.VideoApiUrl; client.ReadResponseAsString = true; return((IVideoApiClient)client); }); serviceCollection.AddHttpClient <INotificationApiClient, NotificationApiClient>() .AddHttpMessageHandler(() => container.GetService <NotificationApiTokenHandler>()) .AddTypedClient(httpClient => { var client = NotificationApiClient.GetClient(httpClient); client.BaseUrl = settings.NotificationApiUrl; client.ReadResponseAsString = true; return((INotificationApiClient)client); }); serviceCollection.AddHttpClient <IPublicHolidayRetriever, UkPublicHolidayRetriever>(); serviceCollection.AddTransient <IUserIdentity, UserIdentity>((ctx) => { var userPrincipal = ctx.GetService <IHttpContextAccessor>().HttpContext.User; return(new UserIdentity(userPrincipal)); }); serviceCollection.AddSingleton <IValidator <EditHearingRequest>, EditHearingRequestValidator>(); return(serviceCollection); }