using Cleanuparr.Domain.Enums;
using Cleanuparr.Persistence.Models.Configuration.General;
namespace Cleanuparr.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);
///
/// Updates all registered HTTP client configurations with new general config settings
///
void UpdateAllClientsFromGeneralConfig(GeneralConfig generalConfig);
///
/// Gets all currently registered client names
///
IEnumerable GetRegisteredClientNames();
///
/// Forces cache invalidation for all registered clients (for debugging/testing)
///
void InvalidateAllCachedConfigurations();
}