From eb72992bbc6c594ae06d6f91e6bfaaf075ec8cd5 Mon Sep 17 00:00:00 2001 From: todd Date: Mon, 28 Aug 2023 20:19:00 +1200 Subject: [PATCH] feat: separate out in DI the singleton Client from the explicit Clients #60 --- .../IocNovuRegistrationExtensions.cs | 38 +++++++++++++------ 1 file changed, 27 insertions(+), 11 deletions(-) diff --git a/src/Novu.Extensions/IocNovuRegistrationExtensions.cs b/src/Novu.Extensions/IocNovuRegistrationExtensions.cs index 9914464..3931dd9 100644 --- a/src/Novu.Extensions/IocNovuRegistrationExtensions.cs +++ b/src/Novu.Extensions/IocNovuRegistrationExtensions.cs @@ -19,22 +19,19 @@ public static IServiceCollection RegisterNovuClients( { var novuConfiguration = configuration.GetNovuClientConfiguration(); - Action configureClient = c => + Action configureClient = client => { - c.BaseAddress = new Uri(novuConfiguration.Url); + client.BaseAddress = new Uri(novuConfiguration.Url); // allow for multiple registrations—authorization cannot have multiple entries - if (c.DefaultRequestHeaders.Contains("Authorization")) + if (client.DefaultRequestHeaders.Contains("Authorization")) { - c.DefaultRequestHeaders.Remove("Authorization"); + client.DefaultRequestHeaders.Remove("Authorization"); } - c.DefaultRequestHeaders.Add("Authorization", $"ApiKey {novuConfiguration.ApiKey}"); - }; - var settings = refitSettings ?? new RefitSettings - { - ContentSerializer = new NewtonsoftJsonContentSerializer(NovuClient.DefaultSerializerSettings), + client.DefaultRequestHeaders.Add("Authorization", $"ApiKey {novuConfiguration.ApiKey}"); }; + var settings = RefitSettings(refitSettings); services.AddRefitClient(settings).ConfigureHttpClient(configureClient); services.AddRefitClient(settings).ConfigureHttpClient(configureClient); @@ -48,7 +45,26 @@ public static IServiceCollection RegisterNovuClients( services.AddRefitClient(settings).ConfigureHttpClient(configureClient); return services - .AddTransient(_ => novuConfiguration) - .AddTransient(); + .AddTransient(_ => novuConfiguration); + } + + + public static IServiceCollection RegisterNovuClient( + this IServiceCollection services, + IConfiguration configuration, + RefitSettings refitSettings = null) + { + return services + .AddTransient(_ => new NovuClient( + configuration.GetNovuClientConfiguration(), + refitSettings: RefitSettings(refitSettings))); + } + + private static RefitSettings RefitSettings(RefitSettings refitSettings) + { + return refitSettings ?? new RefitSettings + { + ContentSerializer = new NewtonsoftJsonContentSerializer(NovuClient.DefaultSerializerSettings), + }; } } \ No newline at end of file