using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Slim;
using System.Net.Http;
using System.Net.WebSockets;
namespace System.Extensions;
public static class ServiceManagerExtensions
{
///
/// Registers a .
///
/// .
/// Factory that produces a .
///
public static IServiceProducer RegisterLoggerFactory(this IServiceProducer serviceProducer, Func loggerFactory)
{
serviceProducer.ThrowIfNull(nameof(serviceProducer));
serviceProducer.RegisterSingleton(loggerFactory);
return serviceProducer;
}
///
/// Register a scoped to be used by the DI engine.
///
/// Type of the scoped .
/// .
/// to build the http client.
public static HttpClientBuilder RegisterHttpClient(this IServiceCollection services)
{
services.ThrowIfNull(nameof(services));
return new HttpClientBuilder(services);
}
///
/// Register a scoped to be used by the DI engine.
///
/// Type of the scoped .
/// .
/// to build the websocket client.
public static ClientWebSocketBuilder RegisterClientWebSocket(this IServiceCollection services)
{
services.ThrowIfNull(nameof(services));
return new ClientWebSocketBuilder(services);
}
[Obsolete($"{nameof(RegisterHttpFactory)} is obsolete. Please use {nameof(RegisterHttpClient)} for each service that requires an instance of {nameof(IHttpClient