- Implemented ConfigureHttpClient extension for IServiceCollection with dynamic client name - Added AddInfrastructureServices method to simplify HttpClient registration via configurable options - Introduced sealed Config class for flexible client configuration
35 lines
1011 B
C#
35 lines
1011 B
C#
using Microsoft.Extensions.DependencyInjection;
|
|
|
|
namespace Leanetec.EConnect.Infrastructure;
|
|
|
|
public static class DependencyInjection
|
|
{
|
|
internal static readonly string HttpClientName = Guid.NewGuid().ToString();
|
|
|
|
internal static IServiceCollection ConfigureHttpClient(this IServiceCollection services, Action<HttpClient> configureClient)
|
|
{
|
|
services.AddHttpClient(HttpClientName, configureClient);
|
|
return services;
|
|
}
|
|
|
|
public static IServiceCollection AddInfrastructureServices(this IServiceCollection services, Action<Config> options)
|
|
{
|
|
Config config = new(services);
|
|
options.Invoke(config);
|
|
services.ConfigureHttpClient(config.Client);
|
|
return services;
|
|
}
|
|
|
|
public sealed class Config
|
|
{
|
|
private readonly IServiceCollection _services;
|
|
|
|
internal Config(IServiceCollection services)
|
|
{
|
|
_services = services;
|
|
}
|
|
|
|
public Action<HttpClient> Client { get; set; } = _ => { };
|
|
}
|
|
}
|