diff --git a/Directory.Packages.props b/Directory.Packages.props
index 4dbbc0e0..036e961f 100644
--- a/Directory.Packages.props
+++ b/Directory.Packages.props
@@ -11,7 +11,7 @@
-
+
diff --git a/src/Recyclarr.ServarrApi/ApiServicesAutofacModule.cs b/src/Recyclarr.ServarrApi/ApiServicesAutofacModule.cs
index f2c9b345..f2ab7d5f 100644
--- a/src/Recyclarr.ServarrApi/ApiServicesAutofacModule.cs
+++ b/src/Recyclarr.ServarrApi/ApiServicesAutofacModule.cs
@@ -14,12 +14,7 @@ public class ApiServicesAutofacModule : Module
protected override void Load(ContainerBuilder builder)
{
base.Load(builder);
- builder.RegisterType();
- builder.Register(c =>
- {
- var config = c.Resolve();
- return new FlurlClientCache().ConfigureAll(x => config.Configure(x));
- })
+ builder.RegisterType()
.As()
.SingleInstance();
diff --git a/src/Recyclarr.ServarrApi/Http/FlurlConfigurator.cs b/src/Recyclarr.ServarrApi/Http/FlurlConfigurator.cs
deleted file mode 100644
index 6095df5d..00000000
--- a/src/Recyclarr.ServarrApi/Http/FlurlConfigurator.cs
+++ /dev/null
@@ -1,37 +0,0 @@
-using System.Diagnostics.CodeAnalysis;
-using System.Net.Security;
-using Flurl.Http.Configuration;
-using Recyclarr.Json;
-using Recyclarr.Settings;
-using Serilog;
-
-namespace Recyclarr.ServarrApi.Http;
-
-public class FlurlConfigurator(ILogger log, ISettingsProvider settingsProvider)
-{
- [SuppressMessage("SonarCloud", "S4830:Server certificates should be verified during SSL/TLS connections")]
- [SuppressMessage("Security", "CA5359:Do Not Disable Certificate Validation")]
- public void Configure(IFlurlClientBuilder builder)
- {
- builder.WithSettings(settings =>
- {
- settings.JsonSerializer = new DefaultJsonSerializer(GlobalJsonSerializerSettings.Services);
- FlurlLogging.SetupLogging(settings, log);
- });
-
- builder.ConfigureInnerHandler(handler =>
- {
- if (!settingsProvider.Settings.EnableSslCertificateValidation)
- {
- log.Warning(
- "Security Risk: Certificate validation is being DISABLED because setting " +
- "`enable_ssl_certificate_validation` is set to `false`");
-
- handler.SslOptions = new SslClientAuthenticationOptions
- {
- RemoteCertificateValidationCallback = (_, _, _, _) => true
- };
- }
- });
- }
-}
diff --git a/src/Recyclarr.ServarrApi/Http/ServarrRequestBuilder.cs b/src/Recyclarr.ServarrApi/Http/ServarrRequestBuilder.cs
index 72f92ca2..c9c79499 100644
--- a/src/Recyclarr.ServarrApi/Http/ServarrRequestBuilder.cs
+++ b/src/Recyclarr.ServarrApi/Http/ServarrRequestBuilder.cs
@@ -1,17 +1,51 @@
+using System.Diagnostics.CodeAnalysis;
using Flurl;
using Flurl.Http;
using Flurl.Http.Configuration;
using Recyclarr.Config.Models;
+using Recyclarr.Json;
+using Recyclarr.Settings;
+using Serilog;
namespace Recyclarr.ServarrApi.Http;
-public class ServarrRequestBuilder(IFlurlClientCache clientCache) : IServarrRequestBuilder
+public class ServarrRequestBuilder(
+ ILogger log,
+ IFlurlClientCache clientCache,
+ ISettingsProvider settingsProvider)
+ : IServarrRequestBuilder
{
public IFlurlRequest Request(IServiceConfiguration config, params object[] path)
{
- var client = clientCache.Get(config.InstanceName);
- client.BaseUrl ??= config.BaseUrl.AppendPathSegments("api", "v3");
+ var client = clientCache.GetOrAdd(
+ config.InstanceName,
+ config.BaseUrl.AppendPathSegments("api", "v3"),
+ Configure);
+
return client.Request(path)
.WithHeader("X-Api-Key", config.ApiKey);
}
+
+ [SuppressMessage("SonarCloud", "S4830:Server certificates should be verified during SSL/TLS connections")]
+ [SuppressMessage("Security", "CA5359:Do Not Disable Certificate Validation")]
+ private void Configure(IFlurlClientBuilder builder)
+ {
+ builder.WithSettings(settings =>
+ {
+ settings.JsonSerializer = new DefaultJsonSerializer(GlobalJsonSerializerSettings.Services);
+ FlurlLogging.SetupLogging(settings, log);
+ });
+
+ builder.ConfigureInnerHandler(handler =>
+ {
+ if (!settingsProvider.Settings.EnableSslCertificateValidation)
+ {
+ log.Warning(
+ "Security Risk: Certificate validation is being DISABLED because setting " +
+ "`enable_ssl_certificate_validation` is set to `false`");
+
+ handler.ServerCertificateCustomValidationCallback = (_, _, _, _) => true;
+ }
+ });
+ }
}