using Common.Enums;
namespace Infrastructure.Http.DynamicHttpClientSystem;
///
/// Factory service to manage dynamic HttpClient creation
///
public interface IDynamicHttpClientFactory
{
///
/// Creates an HttpClient with the specified configuration and registers it for future use
///
HttpClient CreateClient(string clientName, HttpClientConfig config);
///
/// Creates an HttpClient using a previously registered configuration
///
HttpClient CreateClient(string clientName);
///
/// Registers a configuration for later use
///
void RegisterConfiguration(string clientName, HttpClientConfig config);
///
/// Registers a retry-enabled HttpClient configuration
///
void RegisterRetryClient(string clientName, int timeout, RetryConfig retryConfig, CertificateValidationType certificateType);
///
/// Registers a Deluge-specific HttpClient configuration
///
void RegisterDelugeClient(string clientName, int timeout, RetryConfig retryConfig, CertificateValidationType certificateType);
///
/// Registers a configuration for a download client
///
void RegisterDownloadClient(string clientName, int timeout, HttpClientType clientType, RetryConfig retryConfig, CertificateValidationType certificateType);
///
/// Unregisters a configuration
///
void UnregisterConfiguration(string clientName);
}