using GatewayAPI.Clients.BookingService; using GatewayAPI.Clients.FlightService; using GatewayAPI.Clients.UserService; using System.Runtime.CompilerServices; namespace GatewayAPI { public static class ServiceCollectionExtensions { public static IServiceCollection AddHttpClients(this IServiceCollection services, ConfigurationManager configurationManager) { services.AddHttpClient<IUserServiceClient, UserServiceClient>(client => { string baseUrl = configurationManager["UserMicroservice:BaseUrl"] ?? throw new InvalidOperationException("UserMicroservice BaseUrl is not configured."); client.BaseAddress = new Uri(baseUrl.EndsWith("/") ? baseUrl : baseUrl + "/"); }).AddHttpMessageHandler<RequestCookieHandler>(); services.AddHttpClient<IFlightServiceClient, FlightServiceClient>(client => { string baseUrl = configurationManager["FlightMicroservice:BaseUrl"] ?? throw new InvalidOperationException("FlightMicroservice BaseUrl is not configured."); client.BaseAddress = new Uri(baseUrl.EndsWith("/") ? baseUrl : baseUrl + "/"); }).AddHttpMessageHandler<RequestCookieHandler>(); services.AddHttpClient<IBookingServiceClient, BookingServiceClient>(client => { string baseUrl = configurationManager["BookingMicroservice:BaseUrl"] ?? throw new InvalidOperationException("BookingMicroservice BaseUrl is not configured."); client.BaseAddress = new Uri(baseUrl.EndsWith("/") ? baseUrl : baseUrl + "/"); }).AddHttpMessageHandler<RequestCookieHandler>(); return services; } } }