refactor: Move HTTP-specific code to its own project

master
Robert Dailey 4 weeks ago
parent 54d3ee4219
commit a1be77f800

@ -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

@ -112,6 +112,7 @@
<s:String x:Key="/Default/CodeStyle/CodeCleanup/SilentCleanupProfile/@EntryValue">Recyclarr Cleanup</s:String>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Listers/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Persister/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Preventer/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=radarr/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Recyclarr/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Recyclarr_0027s/@EntryIndexedValue">True</s:Boolean>

@ -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<ServiceProcessorsAutofacModule>();
builder.RegisterModule<CacheAutofacModule>();
builder.RegisterModule<SettingsAutofacModule>();
builder.RegisterModule<ApiServicesAutofacModule>();
builder.RegisterModule<HttpAutofacModule>();
builder.RegisterModule<ServarrApiAutofacModule>();
builder.RegisterModule<VersionControlAutofacModule>();
builder.RegisterModule<RepoAutofacModule>();
builder.RegisterModule<CompatibilityAutofacModule>();

@ -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;

@ -1,7 +1,7 @@
using System.Text.RegularExpressions;
using Flurl.Http;
namespace Recyclarr.ServarrApi.Http;
namespace Recyclarr.Http;
public static partial class FlurlExtensions
{

@ -2,7 +2,7 @@ using System.Text.Json;
using Flurl;
using Serilog;
namespace Recyclarr.ServarrApi.Http;
namespace Recyclarr.Http;
public static class FlurlLogging
{

@ -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;

@ -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")]

@ -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<FlurlClientCache>()
.As<IFlurlClientCache>()
.SingleInstance();
builder.RegisterTypes(
typeof(FlurlAfterCallLogRedactor),
typeof(FlurlBeforeCallLogRedactor),
typeof(FlurlRedirectPreventer))
.As<FlurlSpecificEventHandler>();
}
}

@ -0,0 +1,8 @@
<Project Sdk="Microsoft.NET.Sdk">
<ItemGroup>
<PackageReference Include="Autofac" />
<PackageReference Include="Flurl.Http" />
<PackageReference Include="JetBrains.Annotations" />
<PackageReference Include="Serilog" />
</ItemGroup>
</Project>

@ -1,6 +1,5 @@
using Flurl.Http;
using Recyclarr.Config.Models;
using Recyclarr.ServarrApi.Http.Servarr;
using Recyclarr.TrashGuide.CustomFormat;
namespace Recyclarr.ServarrApi.CustomFormat;

@ -1,7 +1,7 @@
using Flurl.Http;
using Recyclarr.Config.Models;
namespace Recyclarr.ServarrApi.Http.Servarr;
namespace Recyclarr.ServarrApi;
public interface IServarrRequestBuilder
{

@ -1,7 +1,6 @@
using Flurl.Http;
using Recyclarr.Common;
using Recyclarr.Config.Models;
using Recyclarr.ServarrApi.Http.Servarr;
namespace Recyclarr.ServarrApi.MediaNaming;

@ -1,6 +1,5 @@
using Flurl.Http;
using Recyclarr.Config.Models;
using Recyclarr.ServarrApi.Http.Servarr;
namespace Recyclarr.ServarrApi.QualityDefinition;

@ -1,6 +1,5 @@
using Flurl.Http;
using Recyclarr.Config.Models;
using Recyclarr.ServarrApi.Http.Servarr;
namespace Recyclarr.ServarrApi.QualityProfile;

@ -6,6 +6,7 @@
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Recyclarr.Config\Recyclarr.Config.csproj" />
<ProjectReference Include="..\Recyclarr.Http\Recyclarr.Http.csproj" />
<ProjectReference Include="..\Recyclarr.Json\Recyclarr.Json.csproj" />
<ProjectReference Include="..\Recyclarr.Settings\Recyclarr.Settings.csproj" />
</ItemGroup>

@ -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<FlurlClientCache>()
.As<IFlurlClientCache>()
.SingleInstance();
builder.RegisterType<SystemApiService>().As<ISystemApiService>();
builder.RegisterType<ServarrRequestBuilder>().As<IServarrRequestBuilder>();
builder.RegisterType<QualityProfileApiService>().As<IQualityProfileApiService>();
builder.RegisterType<CustomFormatApiService>().As<ICustomFormatApiService>();
builder.RegisterType<QualityDefinitionApiService>().As<IQualityDefinitionApiService>();
builder.RegisterType<MediaNamingApiService>().As<IMediaNamingApiService>();
builder.RegisterTypes(
typeof(FlurlAfterCallHandler),
typeof(FlurlBeforeCallHandler),
typeof(FlurlRedirectHandler))
.As<FlurlSpecificEventHandler>();
}
}

@ -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,

@ -1,6 +1,5 @@
using Flurl.Http;
using Recyclarr.Config.Models;
using Recyclarr.ServarrApi.Http.Servarr;
namespace Recyclarr.ServarrApi.System;

@ -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<GuideAutofacModule>();
builder.RegisterModule<YamlAutofacModule>();
builder.RegisterModule<SettingsAutofacModule>();
builder.RegisterModule<ApiServicesAutofacModule>();
builder.RegisterModule<HttpAutofacModule>();
builder.RegisterModule<ServarrApiAutofacModule>();
builder.RegisterModule<VersionControlAutofacModule>();
builder.RegisterModule<RepoAutofacModule>();
builder.RegisterModule<CompatibilityAutofacModule>();

Loading…
Cancel
Save