diff --git a/src/ReC.Client/DependencyInjection.cs b/src/ReC.Client/DependencyInjection.cs index d747007..a6c1523 100644 --- a/src/ReC.Client/DependencyInjection.cs +++ b/src/ReC.Client/DependencyInjection.cs @@ -1,6 +1,6 @@ using Microsoft.Extensions.DependencyInjection; -#if NETFRAMEWORK using System; +#if NETFRAMEWORK using System.Net.Http; #endif @@ -16,9 +16,15 @@ namespace ReC.Client /// /// The to add the services to. /// The base URI of the ReC API. + /// An optional action to configure . When omitted, defaults are used. /// An that can be used to configure the client. - public static IHttpClientBuilder AddRecClient(this IServiceCollection services, string apiUri) +#if NETFRAMEWORK + public static IHttpClientBuilder AddRecClient(this IServiceCollection services, string apiUri, Action configureOptions = null) +#else + public static IHttpClientBuilder AddRecClient(this IServiceCollection services, string apiUri, Action? configureOptions = null) +#endif { + AddRecClientOptions(services, configureOptions); services.AddScoped(); return services.AddHttpClient(ReCClient.ClientName, client => { @@ -31,11 +37,29 @@ namespace ReC.Client /// /// The to add the services to. /// An action to configure the . + /// An optional action to configure . When omitted, defaults are used. /// An that can be used to configure the client. - public static IHttpClientBuilder AddRecClient(this IServiceCollection services, Action configureClient) +#if NETFRAMEWORK + public static IHttpClientBuilder AddRecClient(this IServiceCollection services, Action configureClient, Action configureOptions = null) +#else + public static IHttpClientBuilder AddRecClient(this IServiceCollection services, Action configureClient, Action? configureOptions = null) +#endif { + AddRecClientOptions(services, configureOptions); services.AddScoped(); return services.AddHttpClient(ReCClient.ClientName, configureClient); } + +#if NETFRAMEWORK + private static void AddRecClientOptions(IServiceCollection services, Action configureOptions) +#else + private static void AddRecClientOptions(IServiceCollection services, Action? configureOptions) +#endif + { + // Ensure default options are always registered even when the caller does not configure anything. + var builder = services.AddOptions(); + if (configureOptions != null) + builder.Configure(configureOptions); + } } } \ No newline at end of file