Skip to content

Commit

Permalink
feat: separate out in DI the singleton Client from the explicit Clients
Browse files Browse the repository at this point in the history
  • Loading branch information
todd committed Aug 28, 2023
1 parent efac6e2 commit eb72992
Showing 1 changed file with 27 additions and 11 deletions.
38 changes: 27 additions & 11 deletions src/Novu.Extensions/IocNovuRegistrationExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,22 +19,19 @@ public static class IocNovuRegistrationExtensions
{
var novuConfiguration = configuration.GetNovuClientConfiguration();

Action<HttpClient> configureClient = c =>
Action<HttpClient> 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<ISubscriberClient>(settings).ConfigureHttpClient(configureClient);
services.AddRefitClient<IEventClient>(settings).ConfigureHttpClient(configureClient);
Expand All @@ -48,7 +45,26 @@ public static class IocNovuRegistrationExtensions
services.AddRefitClient<IExecutionDetailsClient>(settings).ConfigureHttpClient(configureClient);

return services
.AddTransient<INovuClientConfiguration>(_ => novuConfiguration)
.AddTransient<INovuClient, NovuClient>();
.AddTransient<INovuClientConfiguration>(_ => novuConfiguration);
}


public static IServiceCollection RegisterNovuClient(
this IServiceCollection services,
IConfiguration configuration,
RefitSettings refitSettings = null)
{
return services
.AddTransient<INovuClient>(_ => new NovuClient(
configuration.GetNovuClientConfiguration(),
refitSettings: RefitSettings(refitSettings)));
}

private static RefitSettings RefitSettings(RefitSettings refitSettings)
{
return refitSettings ?? new RefitSettings
{
ContentSerializer = new NewtonsoftJsonContentSerializer(NovuClient.DefaultSerializerSettings),
};
}
}

0 comments on commit eb72992

Please sign in to comment.