Skip to content
Snippets Groups Projects
ServiceCollectionExtensions.cs 1.69 KiB
Newer Older
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;
        }
    }
}