From a43d1ebc20d21ddc3dcf4564746b8bb23c59dad1 Mon Sep 17 00:00:00 2001 From: TekH Date: Tue, 19 May 2026 19:20:17 +0200 Subject: [PATCH] Add optional ReCClientOptions configuration support Added an optional `configureOptions` parameter to `AddRecClient` methods, enabling configuration of `ReCClientOptions`. Introduced conditional compilation to handle nullability differences between .NET Framework and other frameworks. Implemented a private helper method `AddRecClientOptions` to ensure default options are registered even when no configuration action is provided. Updated `AddRecClient` overloads to use this helper. Included `System.Net.Http` in `#if NETFRAMEWORK` directives to maintain compatibility with .NET Framework. --- src/ReC.Client/DependencyInjection.cs | 30 ++++++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) 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