using Microsoft.Extensions.DependencyInjection;
using System;
#if NETFRAMEWORK
using System.Net.Http;
#endif
namespace ReC.Client
{
///
/// Provides extension methods for setting up the ReC client in an .
///
public static class DependencyInjection
{
///
/// Adds and configures the for the to the specified
///
/// 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.
#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 =>
{
client.BaseAddress = new Uri(apiUri);
});
}
///
/// Adds and configures the for the to the specified
///
/// 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.
#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);
}
}
}