diff --git a/src/Recyclarr.ServarrApi/ApiServicesAutofacModule.cs b/src/Recyclarr.ServarrApi/ApiServicesAutofacModule.cs index f4f66601..644de99a 100644 --- a/src/Recyclarr.ServarrApi/ApiServicesAutofacModule.cs +++ b/src/Recyclarr.ServarrApi/ApiServicesAutofacModule.cs @@ -14,10 +14,10 @@ public class ApiServicesAutofacModule : Module protected override void Load(ContainerBuilder builder) { base.Load(builder); - builder.RegisterType().As().SingleInstance(); + builder.RegisterType().As().SingleInstance(); builder.RegisterType().As(); - builder.RegisterType().As(); + builder.RegisterType().As(); builder.RegisterType().As(); builder.RegisterType().As(); builder.RegisterType().As(); diff --git a/src/Recyclarr.ServarrApi/CustomFormat/CustomFormatApiService.cs b/src/Recyclarr.ServarrApi/CustomFormat/CustomFormatApiService.cs index 45af7130..6c97ced9 100644 --- a/src/Recyclarr.ServarrApi/CustomFormat/CustomFormatApiService.cs +++ b/src/Recyclarr.ServarrApi/CustomFormat/CustomFormatApiService.cs @@ -7,9 +7,9 @@ namespace Recyclarr.ServarrApi.CustomFormat; public class CustomFormatApiService : ICustomFormatApiService { - private readonly IServiceRequestBuilder _service; + private readonly IServarrRequestBuilder _service; - public CustomFormatApiService(IServiceRequestBuilder service) + public CustomFormatApiService(IServarrRequestBuilder service) { _service = service; } diff --git a/src/Recyclarr.ServarrApi/Http/IServiceRequestBuilder.cs b/src/Recyclarr.ServarrApi/Http/IServarrRequestBuilder.cs similarity index 81% rename from src/Recyclarr.ServarrApi/Http/IServiceRequestBuilder.cs rename to src/Recyclarr.ServarrApi/Http/IServarrRequestBuilder.cs index eb1f76eb..928981ff 100644 --- a/src/Recyclarr.ServarrApi/Http/IServiceRequestBuilder.cs +++ b/src/Recyclarr.ServarrApi/Http/IServarrRequestBuilder.cs @@ -3,7 +3,7 @@ using Recyclarr.Config.Models; namespace Recyclarr.ServarrApi.Http; -public interface IServiceRequestBuilder +public interface IServarrRequestBuilder { IFlurlRequest Request(IServiceConfiguration config, params object[] path); } diff --git a/src/Recyclarr.ServarrApi/Http/FlurlClientFactory.cs b/src/Recyclarr.ServarrApi/Http/ServarrRequestBuilder.cs similarity index 66% rename from src/Recyclarr.ServarrApi/Http/FlurlClientFactory.cs rename to src/Recyclarr.ServarrApi/Http/ServarrRequestBuilder.cs index 72f643f0..090f85cd 100644 --- a/src/Recyclarr.ServarrApi/Http/FlurlClientFactory.cs +++ b/src/Recyclarr.ServarrApi/Http/ServarrRequestBuilder.cs @@ -2,30 +2,32 @@ using Flurl; using Flurl.Http; using Flurl.Http.Configuration; using Recyclarr.Common.Networking; +using Recyclarr.Config.Models; using Recyclarr.Json; using Recyclarr.Settings; using Serilog; namespace Recyclarr.ServarrApi.Http; -public sealed class FlurlClientFactory : IFlurlClientFactory +public class ServarrRequestBuilder : IServarrRequestBuilder { private readonly ILogger _log; private readonly ISettingsProvider _settingsProvider; - private readonly PerBaseUrlFlurlClientFactory _factory; + private readonly IFlurlClientFactory _clientFactory; - public FlurlClientFactory(ILogger log, ISettingsProvider settingsProvider) + public ServarrRequestBuilder(ILogger log, ISettingsProvider settingsProvider, IFlurlClientFactory clientFactory) { _log = log; _settingsProvider = settingsProvider; - _factory = new PerBaseUrlFlurlClientFactory(); + _clientFactory = clientFactory; } - public IFlurlClient Get(Url url) + public IFlurlRequest Request(IServiceConfiguration config, params object[] path) { - var client = _factory.Get(url); + var client = _clientFactory.Get(config.BaseUrl.AppendPathSegments("api", "v3")); client.Settings = GetClientSettings(); - return client; + return client.Request(path) + .WithHeader("X-Api-Key", config.ApiKey); } private ClientFlurlHttpSettings GetClientSettings() @@ -48,9 +50,4 @@ public sealed class FlurlClientFactory : IFlurlClientFactory return settings; } - - public void Dispose() - { - _factory.Dispose(); - } } diff --git a/src/Recyclarr.ServarrApi/Http/ServiceRequestBuilder.cs b/src/Recyclarr.ServarrApi/Http/ServiceRequestBuilder.cs deleted file mode 100644 index a7f9223a..00000000 --- a/src/Recyclarr.ServarrApi/Http/ServiceRequestBuilder.cs +++ /dev/null @@ -1,22 +0,0 @@ -using Flurl.Http; -using Flurl.Http.Configuration; -using Recyclarr.Config.Models; - -namespace Recyclarr.ServarrApi.Http; - -public class ServiceRequestBuilder : IServiceRequestBuilder -{ - private readonly IFlurlClientFactory _clientFactory; - - public ServiceRequestBuilder(IFlurlClientFactory clientFactory) - { - _clientFactory = clientFactory; - } - - public IFlurlRequest Request(IServiceConfiguration config, params object[] path) - { - var client = _clientFactory.Get(config.BaseUrl); - return client.Request(new[] {"api", "v3"}.Concat(path).ToArray()) - .WithHeader("X-Api-Key", config.ApiKey); - } -} diff --git a/src/Recyclarr.ServarrApi/MediaNaming/MediaNamingApiService.cs b/src/Recyclarr.ServarrApi/MediaNaming/MediaNamingApiService.cs index 8d02f5fd..ad60dfbb 100644 --- a/src/Recyclarr.ServarrApi/MediaNaming/MediaNamingApiService.cs +++ b/src/Recyclarr.ServarrApi/MediaNaming/MediaNamingApiService.cs @@ -7,9 +7,9 @@ namespace Recyclarr.ServarrApi.MediaNaming; public class MediaNamingApiService : IMediaNamingApiService { - private readonly IServiceRequestBuilder _service; + private readonly IServarrRequestBuilder _service; - public MediaNamingApiService(IServiceRequestBuilder service) + public MediaNamingApiService(IServarrRequestBuilder service) { _service = service; } diff --git a/src/Recyclarr.ServarrApi/QualityDefinition/QualityDefinitionApiService.cs b/src/Recyclarr.ServarrApi/QualityDefinition/QualityDefinitionApiService.cs index e1c520f0..38bbbdaf 100644 --- a/src/Recyclarr.ServarrApi/QualityDefinition/QualityDefinitionApiService.cs +++ b/src/Recyclarr.ServarrApi/QualityDefinition/QualityDefinitionApiService.cs @@ -6,9 +6,9 @@ namespace Recyclarr.ServarrApi.QualityDefinition; internal class QualityDefinitionApiService : IQualityDefinitionApiService { - private readonly IServiceRequestBuilder _service; + private readonly IServarrRequestBuilder _service; - public QualityDefinitionApiService(IServiceRequestBuilder service) + public QualityDefinitionApiService(IServarrRequestBuilder service) { _service = service; } diff --git a/src/Recyclarr.ServarrApi/QualityProfile/QualityProfileApiService.cs b/src/Recyclarr.ServarrApi/QualityProfile/QualityProfileApiService.cs index a7936188..0e302239 100644 --- a/src/Recyclarr.ServarrApi/QualityProfile/QualityProfileApiService.cs +++ b/src/Recyclarr.ServarrApi/QualityProfile/QualityProfileApiService.cs @@ -6,9 +6,9 @@ namespace Recyclarr.ServarrApi.QualityProfile; internal class QualityProfileApiService : IQualityProfileApiService { - private readonly IServiceRequestBuilder _service; + private readonly IServarrRequestBuilder _service; - public QualityProfileApiService(IServiceRequestBuilder service) + public QualityProfileApiService(IServarrRequestBuilder service) { _service = service; } diff --git a/src/Recyclarr.ServarrApi/ReleaseProfile/ReleaseProfileApiService.cs b/src/Recyclarr.ServarrApi/ReleaseProfile/ReleaseProfileApiService.cs index 89cb7c03..89ac5b51 100644 --- a/src/Recyclarr.ServarrApi/ReleaseProfile/ReleaseProfileApiService.cs +++ b/src/Recyclarr.ServarrApi/ReleaseProfile/ReleaseProfileApiService.cs @@ -6,9 +6,9 @@ namespace Recyclarr.ServarrApi.ReleaseProfile; public class ReleaseProfileApiService : IReleaseProfileApiService { - private readonly IServiceRequestBuilder _service; + private readonly IServarrRequestBuilder _service; - public ReleaseProfileApiService(IServiceRequestBuilder service) + public ReleaseProfileApiService(IServarrRequestBuilder service) { _service = service; } diff --git a/src/Recyclarr.ServarrApi/System/SystemApiService.cs b/src/Recyclarr.ServarrApi/System/SystemApiService.cs index 154237ad..9b116441 100644 --- a/src/Recyclarr.ServarrApi/System/SystemApiService.cs +++ b/src/Recyclarr.ServarrApi/System/SystemApiService.cs @@ -6,9 +6,9 @@ namespace Recyclarr.ServarrApi.System; public class SystemApiService : ISystemApiService { - private readonly IServiceRequestBuilder _service; + private readonly IServarrRequestBuilder _service; - public SystemApiService(IServiceRequestBuilder service) + public SystemApiService(IServarrRequestBuilder service) { _service = service; } diff --git a/src/Recyclarr.ServarrApi/Tag/SonarrTagApiService.cs b/src/Recyclarr.ServarrApi/Tag/SonarrTagApiService.cs index e202c699..bd67fb87 100644 --- a/src/Recyclarr.ServarrApi/Tag/SonarrTagApiService.cs +++ b/src/Recyclarr.ServarrApi/Tag/SonarrTagApiService.cs @@ -6,9 +6,9 @@ namespace Recyclarr.ServarrApi.Tag; public class SonarrTagApiService : ISonarrTagApiService { - private readonly IServiceRequestBuilder _service; + private readonly IServarrRequestBuilder _service; - public SonarrTagApiService(IServiceRequestBuilder service) + public SonarrTagApiService(IServarrRequestBuilder service) { _service = service; }