mirror of
https://github.com/Cleanuparr/Cleanuparr.git
synced 2026-01-16 01:38:02 -05:00
try fix download clients factory
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
using System.Net;
|
||||
using Common.Enums;
|
||||
using Data.Models.Configuration.General;
|
||||
using Microsoft.Extensions.Logging;
|
||||
|
||||
namespace Infrastructure.Http.DynamicHttpClientSystem;
|
||||
|
||||
@@ -10,11 +12,16 @@ public class DynamicHttpClientFactory : IDynamicHttpClientFactory
|
||||
{
|
||||
private readonly IHttpClientFactory _httpClientFactory;
|
||||
private readonly IHttpClientConfigStore _configStore;
|
||||
private readonly ILogger<DynamicHttpClientFactory> _logger;
|
||||
|
||||
public DynamicHttpClientFactory(IHttpClientFactory httpClientFactory, IHttpClientConfigStore configStore)
|
||||
public DynamicHttpClientFactory(
|
||||
IHttpClientFactory httpClientFactory,
|
||||
IHttpClientConfigStore configStore,
|
||||
ILogger<DynamicHttpClientFactory> logger)
|
||||
{
|
||||
_httpClientFactory = httpClientFactory;
|
||||
_configStore = configStore;
|
||||
_logger = logger;
|
||||
}
|
||||
|
||||
public HttpClient CreateClient(string clientName, HttpClientConfig config)
|
||||
@@ -93,4 +100,47 @@ public class DynamicHttpClientFactory : IDynamicHttpClientFactory
|
||||
{
|
||||
_configStore.RemoveConfiguration(clientName);
|
||||
}
|
||||
|
||||
public void UpdateAllClientsFromGeneralConfig(GeneralConfig generalConfig)
|
||||
{
|
||||
var allConfigurations = _configStore.GetAllConfigurations().ToList();
|
||||
|
||||
if (!allConfigurations.Any())
|
||||
{
|
||||
_logger.LogDebug("No HTTP client configurations to update");
|
||||
return;
|
||||
}
|
||||
|
||||
var updatedConfigurations = allConfigurations.Select(kvp =>
|
||||
{
|
||||
var config = kvp.Value;
|
||||
|
||||
// Update timeout and certificate validation for all clients
|
||||
config.Timeout = generalConfig.HttpTimeout;
|
||||
config.CertificateValidationType = generalConfig.HttpCertificateValidation;
|
||||
|
||||
// Update retry configuration if it exists
|
||||
if (config.RetryConfig != null)
|
||||
{
|
||||
config.RetryConfig.MaxRetries = generalConfig.HttpMaxRetries;
|
||||
}
|
||||
|
||||
return new KeyValuePair<string, HttpClientConfig>(kvp.Key, config);
|
||||
}).ToList();
|
||||
|
||||
// Apply all updates
|
||||
_configStore.UpdateConfigurations(updatedConfigurations);
|
||||
|
||||
_logger.LogInformation("Updated {Count} HTTP client configurations with new general settings: " +
|
||||
"Timeout={Timeout}s, MaxRetries={MaxRetries}, CertificateValidation={CertValidation}",
|
||||
updatedConfigurations.Count,
|
||||
generalConfig.HttpTimeout,
|
||||
generalConfig.HttpMaxRetries,
|
||||
generalConfig.HttpCertificateValidation);
|
||||
}
|
||||
|
||||
public IEnumerable<string> GetRegisteredClientNames()
|
||||
{
|
||||
return _configStore.GetAllConfigurations().Select(kvp => kvp.Key);
|
||||
}
|
||||
}
|
||||
@@ -35,4 +35,17 @@ public class HttpClientConfigStore : IHttpClientConfigStore
|
||||
{
|
||||
return _retryConfigurations.TryGetValue(clientName, out retryConfig!);
|
||||
}
|
||||
|
||||
public IEnumerable<KeyValuePair<string, HttpClientConfig>> GetAllConfigurations()
|
||||
{
|
||||
return _configurations.ToList(); // Return a snapshot to avoid collection modification issues
|
||||
}
|
||||
|
||||
public void UpdateConfigurations(IEnumerable<KeyValuePair<string, HttpClientConfig>> configurations)
|
||||
{
|
||||
foreach (var kvp in configurations)
|
||||
{
|
||||
_configurations.AddOrUpdate(kvp.Key, kvp.Value, (_, _) => kvp.Value);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,5 @@
|
||||
using Common.Enums;
|
||||
using Data.Models.Configuration.General;
|
||||
|
||||
namespace Infrastructure.Http.DynamicHttpClientSystem;
|
||||
|
||||
@@ -41,4 +42,14 @@ public interface IDynamicHttpClientFactory
|
||||
/// Unregisters a configuration
|
||||
/// </summary>
|
||||
void UnregisterConfiguration(string clientName);
|
||||
|
||||
/// <summary>
|
||||
/// Updates all registered HTTP client configurations with new general config settings
|
||||
/// </summary>
|
||||
void UpdateAllClientsFromGeneralConfig(GeneralConfig generalConfig);
|
||||
|
||||
/// <summary>
|
||||
/// Gets all currently registered client names
|
||||
/// </summary>
|
||||
IEnumerable<string> GetRegisteredClientNames();
|
||||
}
|
||||
@@ -24,4 +24,14 @@ public interface IHttpClientConfigStore
|
||||
/// Adds or updates a retry configuration for the specified client name
|
||||
/// </summary>
|
||||
void AddRetryConfiguration(string clientName, RetryConfig retryConfig);
|
||||
|
||||
/// <summary>
|
||||
/// Gets all currently registered configurations
|
||||
/// </summary>
|
||||
IEnumerable<KeyValuePair<string, HttpClientConfig>> GetAllConfigurations();
|
||||
|
||||
/// <summary>
|
||||
/// Updates multiple configurations atomically
|
||||
/// </summary>
|
||||
void UpdateConfigurations(IEnumerable<KeyValuePair<string, HttpClientConfig>> configurations);
|
||||
}
|
||||
Reference in New Issue
Block a user