Add configurable number of retries and timeout for http calls (#40)

This commit is contained in:
Marius Nechifor
2025-01-14 22:58:03 +02:00
committed by GitHub
parent 058507ac39
commit 2bc8e445ce
15 changed files with 75 additions and 19 deletions

View File

@@ -12,10 +12,10 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="FLM.Transmission" Version="1.0.0" />
<PackageReference Include="FLM.QBittorrent" Version="1.0.0" />
<PackageReference Include="FLM.Transmission" Version="1.0.2" />
<PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.0" />
<PackageReference Include="Microsoft.Extensions.Http" Version="9.0.0" />
<PackageReference Include="QBittorrent.Client" Version="1.9.24285.1" />
<PackageReference Include="Quartz" Version="3.13.1" />
</ItemGroup>

View File

@@ -1,6 +1,7 @@
using Common.Configuration.Arr;
using Common.Configuration.Logging;
using Common.Configuration.QueueCleaner;
using Common.Helpers;
using Domain.Enums;
using Domain.Models.Arr;
using Domain.Models.Arr.Queue;
@@ -29,7 +30,7 @@ public abstract class ArrClient
{
_logger = logger;
_striker = striker;
_httpClient = httpClientFactory.CreateClient();
_httpClient = httpClientFactory.CreateClient(Constants.HttpClientWithRetryName);
_loggingConfig = loggingConfig.Value;
_queueCleanerConfig = queueCleanerConfig.Value;
_striker = striker;

View File

@@ -2,6 +2,7 @@
using System.Diagnostics;
using System.Text.RegularExpressions;
using Common.Configuration.ContentBlocker;
using Common.Helpers;
using Domain.Enums;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
@@ -27,7 +28,7 @@ public sealed class BlocklistProvider
{
_logger = logger;
_config = config.Value;
_httpClient = httpClientFactory.CreateClient();
_httpClient = httpClientFactory.CreateClient(Constants.HttpClientWithRetryName);
_config.Validate();

View File

@@ -1,5 +1,6 @@
using Common.Configuration.DownloadClient;
using Common.Configuration.QueueCleaner;
using Common.Helpers;
using Infrastructure.Verticals.ContentBlocker;
using Infrastructure.Verticals.ItemStriker;
using Microsoft.Extensions.Logging;
@@ -15,6 +16,7 @@ public sealed class QBitService : DownloadServiceBase
public QBitService(
ILogger<QBitService> logger,
IHttpClientFactory httpClientFactory,
IOptions<QBitConfig> config,
IOptions<QueueCleanerConfig> queueCleanerConfig,
FilenameEvaluator filenameEvaluator,
@@ -23,7 +25,7 @@ public sealed class QBitService : DownloadServiceBase
{
_config = config.Value;
_config.Validate();
_client = new(_config.Url);
_client = new(httpClientFactory.CreateClient(Constants.HttpClientWithRetryName), _config.Url);
}
public override async Task LoginAsync()

View File

@@ -1,5 +1,6 @@
using Common.Configuration.DownloadClient;
using Common.Configuration.QueueCleaner;
using Common.Helpers;
using Infrastructure.Verticals.ContentBlocker;
using Infrastructure.Verticals.ItemStriker;
using Microsoft.Extensions.Logging;
@@ -17,6 +18,7 @@ public sealed class TransmissionService : DownloadServiceBase
private TorrentInfo[]? _torrentsCache;
public TransmissionService(
IHttpClientFactory httpClientFactory,
ILogger<TransmissionService> logger,
IOptions<TransmissionConfig> config,
IOptions<QueueCleanerConfig> queueCleanerConfig,
@@ -27,6 +29,7 @@ public sealed class TransmissionService : DownloadServiceBase
_config = config.Value;
_config.Validate();
_client = new(
httpClientFactory.CreateClient(Constants.HttpClientWithRetryName),
new Uri(_config.Url, "/transmission/rpc").ToString(),
login: _config.Username,
password: _config.Password