diff --git a/Recyclarr.sln b/Recyclarr.sln
index be2fa101..7fb387c7 100644
--- a/Recyclarr.sln
+++ b/Recyclarr.sln
@@ -55,6 +55,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Recyclarr.Cli.IntegrationTe
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Recyclarr.Cli.Tests", "tests\Recyclarr.Cli.Tests\Recyclarr.Cli.Tests.csproj", "{59886A2A-338F-4864-9735-1633433B1F8F}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Recyclarr.Http", "src\Recyclarr.Http\Recyclarr.Http.csproj", "{9B90CD1F-5D31-42A4-B0DD-A12BB7DC68CD}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -137,6 +139,10 @@ Global
{59886A2A-338F-4864-9735-1633433B1F8F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{59886A2A-338F-4864-9735-1633433B1F8F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{59886A2A-338F-4864-9735-1633433B1F8F}.Release|Any CPU.Build.0 = Release|Any CPU
+ {9B90CD1F-5D31-42A4-B0DD-A12BB7DC68CD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {9B90CD1F-5D31-42A4-B0DD-A12BB7DC68CD}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {9B90CD1F-5D31-42A4-B0DD-A12BB7DC68CD}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {9B90CD1F-5D31-42A4-B0DD-A12BB7DC68CD}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/Recyclarr.sln.DotSettings b/Recyclarr.sln.DotSettings
index 8a20513b..f7bf56ae 100644
--- a/Recyclarr.sln.DotSettings
+++ b/Recyclarr.sln.DotSettings
@@ -112,6 +112,7 @@
Recyclarr Cleanup
True
True
+ True
True
True
True
diff --git a/src/Recyclarr.Cli/CompositionRoot.cs b/src/Recyclarr.Cli/CompositionRoot.cs
index df3cbd28..dfc6e520 100644
--- a/src/Recyclarr.Cli/CompositionRoot.cs
+++ b/src/Recyclarr.Cli/CompositionRoot.cs
@@ -17,6 +17,7 @@ using Recyclarr.Cli.Processors;
using Recyclarr.Common;
using Recyclarr.Compatibility;
using Recyclarr.Config;
+using Recyclarr.Http;
using Recyclarr.Json;
using Recyclarr.Platform;
using Recyclarr.Repo;
@@ -48,7 +49,8 @@ public static class CompositionRoot
builder.RegisterModule();
builder.RegisterModule();
builder.RegisterModule();
- builder.RegisterModule();
+ builder.RegisterModule();
+ builder.RegisterModule();
builder.RegisterModule();
builder.RegisterModule();
builder.RegisterModule();
diff --git a/src/Recyclarr.Cli/Processors/ErrorHandling/ConsoleExceptionHandler.cs b/src/Recyclarr.Cli/Processors/ErrorHandling/ConsoleExceptionHandler.cs
index fd422829..f76b743e 100644
--- a/src/Recyclarr.Cli/Processors/ErrorHandling/ConsoleExceptionHandler.cs
+++ b/src/Recyclarr.Cli/Processors/ErrorHandling/ConsoleExceptionHandler.cs
@@ -3,7 +3,7 @@ using Recyclarr.Cli.Console;
using Recyclarr.Compatibility;
using Recyclarr.Config.ExceptionTypes;
using Recyclarr.Config.Parsing.ErrorHandling;
-using Recyclarr.ServarrApi.Http;
+using Recyclarr.Http;
using Recyclarr.VersionControl;
namespace Recyclarr.Cli.Processors.ErrorHandling;
diff --git a/src/Recyclarr.ServarrApi/Http/FlurlExtensions.cs b/src/Recyclarr.Http/FlurlExtensions.cs
similarity index 96%
rename from src/Recyclarr.ServarrApi/Http/FlurlExtensions.cs
rename to src/Recyclarr.Http/FlurlExtensions.cs
index 9bbd570d..82043af1 100644
--- a/src/Recyclarr.ServarrApi/Http/FlurlExtensions.cs
+++ b/src/Recyclarr.Http/FlurlExtensions.cs
@@ -1,7 +1,7 @@
using System.Text.RegularExpressions;
using Flurl.Http;
-namespace Recyclarr.ServarrApi.Http;
+namespace Recyclarr.Http;
public static partial class FlurlExtensions
{
diff --git a/src/Recyclarr.ServarrApi/Http/FlurlLogging.cs b/src/Recyclarr.Http/FlurlLogging.cs
similarity index 95%
rename from src/Recyclarr.ServarrApi/Http/FlurlLogging.cs
rename to src/Recyclarr.Http/FlurlLogging.cs
index 82073fb7..7855e750 100644
--- a/src/Recyclarr.ServarrApi/Http/FlurlLogging.cs
+++ b/src/Recyclarr.Http/FlurlLogging.cs
@@ -2,7 +2,7 @@ using System.Text.Json;
using Flurl;
using Serilog;
-namespace Recyclarr.ServarrApi.Http;
+namespace Recyclarr.Http;
public static class FlurlLogging
{
diff --git a/src/Recyclarr.ServarrApi/Http/Servarr/ServarrFlurlEventHandlers.cs b/src/Recyclarr.Http/FlurlLoggingEventHandlers.cs
similarity index 88%
rename from src/Recyclarr.ServarrApi/Http/Servarr/ServarrFlurlEventHandlers.cs
rename to src/Recyclarr.Http/FlurlLoggingEventHandlers.cs
index fa7f527b..dac57bfe 100644
--- a/src/Recyclarr.ServarrApi/Http/Servarr/ServarrFlurlEventHandlers.cs
+++ b/src/Recyclarr.Http/FlurlLoggingEventHandlers.cs
@@ -2,10 +2,10 @@ using Flurl.Http;
using JetBrains.Annotations;
using Serilog;
-namespace Recyclarr.ServarrApi.Http.Servarr;
+namespace Recyclarr.Http;
[UsedImplicitly]
-public class FlurlBeforeCallHandler(ILogger log) : FlurlSpecificEventHandler
+public class FlurlBeforeCallLogRedactor(ILogger log) : FlurlSpecificEventHandler
{
public override FlurlEventType EventType => FlurlEventType.BeforeCall;
@@ -18,7 +18,7 @@ public class FlurlBeforeCallHandler(ILogger log) : FlurlSpecificEventHandler
}
[UsedImplicitly]
-public class FlurlAfterCallHandler(ILogger log) : FlurlSpecificEventHandler
+public class FlurlAfterCallLogRedactor(ILogger log) : FlurlSpecificEventHandler
{
public override FlurlEventType EventType => FlurlEventType.AfterCall;
@@ -38,7 +38,7 @@ public class FlurlAfterCallHandler(ILogger log) : FlurlSpecificEventHandler
}
[UsedImplicitly]
-public class FlurlRedirectHandler(ILogger log) : FlurlSpecificEventHandler
+public class FlurlRedirectPreventer(ILogger log) : FlurlSpecificEventHandler
{
public override FlurlEventType EventType => FlurlEventType.OnRedirect;
diff --git a/src/Recyclarr.ServarrApi/Http/FlurlSpecificEventHandler.cs b/src/Recyclarr.Http/FlurlSpecificEventHandler.cs
similarity index 90%
rename from src/Recyclarr.ServarrApi/Http/FlurlSpecificEventHandler.cs
rename to src/Recyclarr.Http/FlurlSpecificEventHandler.cs
index b07ac24f..86ed6482 100644
--- a/src/Recyclarr.ServarrApi/Http/FlurlSpecificEventHandler.cs
+++ b/src/Recyclarr.Http/FlurlSpecificEventHandler.cs
@@ -1,7 +1,7 @@
using System.Diagnostics.CodeAnalysis;
using Flurl.Http;
-namespace Recyclarr.ServarrApi.Http;
+namespace Recyclarr.Http;
[SuppressMessage("Naming", "CA1711:Identifiers should not have incorrect suffix", Justification =
"Naming convention borrowed from and determined by Flurl")]
diff --git a/src/Recyclarr.Http/HttpAutofacModule.cs b/src/Recyclarr.Http/HttpAutofacModule.cs
new file mode 100644
index 00000000..2a026d14
--- /dev/null
+++ b/src/Recyclarr.Http/HttpAutofacModule.cs
@@ -0,0 +1,21 @@
+using Autofac;
+using Flurl.Http.Configuration;
+
+namespace Recyclarr.Http;
+
+public class HttpAutofacModule : Module
+{
+ protected override void Load(ContainerBuilder builder)
+ {
+ base.Load(builder);
+ builder.RegisterType()
+ .As()
+ .SingleInstance();
+
+ builder.RegisterTypes(
+ typeof(FlurlAfterCallLogRedactor),
+ typeof(FlurlBeforeCallLogRedactor),
+ typeof(FlurlRedirectPreventer))
+ .As();
+ }
+}
diff --git a/src/Recyclarr.Http/Recyclarr.Http.csproj b/src/Recyclarr.Http/Recyclarr.Http.csproj
new file mode 100644
index 00000000..c113e7bf
--- /dev/null
+++ b/src/Recyclarr.Http/Recyclarr.Http.csproj
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/src/Recyclarr.ServarrApi/CustomFormat/CustomFormatApiService.cs b/src/Recyclarr.ServarrApi/CustomFormat/CustomFormatApiService.cs
index 7db5681d..664f90ff 100644
--- a/src/Recyclarr.ServarrApi/CustomFormat/CustomFormatApiService.cs
+++ b/src/Recyclarr.ServarrApi/CustomFormat/CustomFormatApiService.cs
@@ -1,6 +1,5 @@
using Flurl.Http;
using Recyclarr.Config.Models;
-using Recyclarr.ServarrApi.Http.Servarr;
using Recyclarr.TrashGuide.CustomFormat;
namespace Recyclarr.ServarrApi.CustomFormat;
diff --git a/src/Recyclarr.ServarrApi/Http/Servarr/IServarrRequestBuilder.cs b/src/Recyclarr.ServarrApi/IServarrRequestBuilder.cs
similarity index 79%
rename from src/Recyclarr.ServarrApi/Http/Servarr/IServarrRequestBuilder.cs
rename to src/Recyclarr.ServarrApi/IServarrRequestBuilder.cs
index 1a3d3f1b..2f99a984 100644
--- a/src/Recyclarr.ServarrApi/Http/Servarr/IServarrRequestBuilder.cs
+++ b/src/Recyclarr.ServarrApi/IServarrRequestBuilder.cs
@@ -1,7 +1,7 @@
using Flurl.Http;
using Recyclarr.Config.Models;
-namespace Recyclarr.ServarrApi.Http.Servarr;
+namespace Recyclarr.ServarrApi;
public interface IServarrRequestBuilder
{
diff --git a/src/Recyclarr.ServarrApi/MediaNaming/MediaNamingApiService.cs b/src/Recyclarr.ServarrApi/MediaNaming/MediaNamingApiService.cs
index 3da9f603..a9736ff2 100644
--- a/src/Recyclarr.ServarrApi/MediaNaming/MediaNamingApiService.cs
+++ b/src/Recyclarr.ServarrApi/MediaNaming/MediaNamingApiService.cs
@@ -1,7 +1,6 @@
using Flurl.Http;
using Recyclarr.Common;
using Recyclarr.Config.Models;
-using Recyclarr.ServarrApi.Http.Servarr;
namespace Recyclarr.ServarrApi.MediaNaming;
diff --git a/src/Recyclarr.ServarrApi/QualityDefinition/QualityDefinitionApiService.cs b/src/Recyclarr.ServarrApi/QualityDefinition/QualityDefinitionApiService.cs
index 83c5ec96..f4dcfd3b 100644
--- a/src/Recyclarr.ServarrApi/QualityDefinition/QualityDefinitionApiService.cs
+++ b/src/Recyclarr.ServarrApi/QualityDefinition/QualityDefinitionApiService.cs
@@ -1,6 +1,5 @@
using Flurl.Http;
using Recyclarr.Config.Models;
-using Recyclarr.ServarrApi.Http.Servarr;
namespace Recyclarr.ServarrApi.QualityDefinition;
diff --git a/src/Recyclarr.ServarrApi/QualityProfile/QualityProfileApiService.cs b/src/Recyclarr.ServarrApi/QualityProfile/QualityProfileApiService.cs
index d89ba3fe..873aa41f 100644
--- a/src/Recyclarr.ServarrApi/QualityProfile/QualityProfileApiService.cs
+++ b/src/Recyclarr.ServarrApi/QualityProfile/QualityProfileApiService.cs
@@ -1,6 +1,5 @@
using Flurl.Http;
using Recyclarr.Config.Models;
-using Recyclarr.ServarrApi.Http.Servarr;
namespace Recyclarr.ServarrApi.QualityProfile;
diff --git a/src/Recyclarr.ServarrApi/Recyclarr.ServarrApi.csproj b/src/Recyclarr.ServarrApi/Recyclarr.ServarrApi.csproj
index 00af1d7d..4f0f434e 100644
--- a/src/Recyclarr.ServarrApi/Recyclarr.ServarrApi.csproj
+++ b/src/Recyclarr.ServarrApi/Recyclarr.ServarrApi.csproj
@@ -6,6 +6,7 @@
+
diff --git a/src/Recyclarr.ServarrApi/ApiServicesAutofacModule.cs b/src/Recyclarr.ServarrApi/ServarrApiAutofacModule.cs
similarity index 63%
rename from src/Recyclarr.ServarrApi/ApiServicesAutofacModule.cs
rename to src/Recyclarr.ServarrApi/ServarrApiAutofacModule.cs
index 8a669c94..df9f0f0e 100644
--- a/src/Recyclarr.ServarrApi/ApiServicesAutofacModule.cs
+++ b/src/Recyclarr.ServarrApi/ServarrApiAutofacModule.cs
@@ -1,8 +1,5 @@
using Autofac;
-using Flurl.Http.Configuration;
using Recyclarr.ServarrApi.CustomFormat;
-using Recyclarr.ServarrApi.Http;
-using Recyclarr.ServarrApi.Http.Servarr;
using Recyclarr.ServarrApi.MediaNaming;
using Recyclarr.ServarrApi.QualityDefinition;
using Recyclarr.ServarrApi.QualityProfile;
@@ -10,26 +7,16 @@ using Recyclarr.ServarrApi.System;
namespace Recyclarr.ServarrApi;
-public class ApiServicesAutofacModule : Module
+public class ServarrApiAutofacModule : Module
{
protected override void Load(ContainerBuilder builder)
{
base.Load(builder);
- builder.RegisterType()
- .As()
- .SingleInstance();
-
builder.RegisterType().As();
builder.RegisterType().As();
builder.RegisterType().As();
builder.RegisterType().As();
builder.RegisterType().As();
builder.RegisterType().As();
-
- builder.RegisterTypes(
- typeof(FlurlAfterCallHandler),
- typeof(FlurlBeforeCallHandler),
- typeof(FlurlRedirectHandler))
- .As();
}
}
diff --git a/src/Recyclarr.ServarrApi/Http/Servarr/ServarrRequestBuilder.cs b/src/Recyclarr.ServarrApi/ServarrRequestBuilder.cs
similarity index 97%
rename from src/Recyclarr.ServarrApi/Http/Servarr/ServarrRequestBuilder.cs
rename to src/Recyclarr.ServarrApi/ServarrRequestBuilder.cs
index 62d5c20d..d8414bfe 100644
--- a/src/Recyclarr.ServarrApi/Http/Servarr/ServarrRequestBuilder.cs
+++ b/src/Recyclarr.ServarrApi/ServarrRequestBuilder.cs
@@ -3,11 +3,12 @@ using Flurl;
using Flurl.Http;
using Flurl.Http.Configuration;
using Recyclarr.Config.Models;
+using Recyclarr.Http;
using Recyclarr.Json;
using Recyclarr.Settings;
using Serilog;
-namespace Recyclarr.ServarrApi.Http.Servarr;
+namespace Recyclarr.ServarrApi;
public class ServarrRequestBuilder(
ILogger log,
diff --git a/src/Recyclarr.ServarrApi/System/SystemApiService.cs b/src/Recyclarr.ServarrApi/System/SystemApiService.cs
index ad61cf33..cb8b990d 100644
--- a/src/Recyclarr.ServarrApi/System/SystemApiService.cs
+++ b/src/Recyclarr.ServarrApi/System/SystemApiService.cs
@@ -1,6 +1,5 @@
using Flurl.Http;
using Recyclarr.Config.Models;
-using Recyclarr.ServarrApi.Http.Servarr;
namespace Recyclarr.ServarrApi.System;
diff --git a/tests/Recyclarr.IntegrationTests/IntegrationTestFixture.cs b/tests/Recyclarr.IntegrationTests/IntegrationTestFixture.cs
index 5559d307..4c769d1c 100644
--- a/tests/Recyclarr.IntegrationTests/IntegrationTestFixture.cs
+++ b/tests/Recyclarr.IntegrationTests/IntegrationTestFixture.cs
@@ -5,6 +5,7 @@ using Autofac.Features.ResolveAnything;
using Recyclarr.Common;
using Recyclarr.Compatibility;
using Recyclarr.Config;
+using Recyclarr.Http;
using Recyclarr.Json;
using Recyclarr.Platform;
using Recyclarr.Repo;
@@ -63,7 +64,8 @@ public abstract class IntegrationTestFixture : IDisposable
builder.RegisterModule();
builder.RegisterModule();
builder.RegisterModule();
- builder.RegisterModule();
+ builder.RegisterModule();
+ builder.RegisterModule();
builder.RegisterModule();
builder.RegisterModule();
builder.RegisterModule();