refactor: Split API code into own project

pull/231/head
Robert Dailey 8 months ago
parent 9ede5125bf
commit aae8897250

@ -1,9 +1,9 @@
using Autofac; using Autofac;
using Autofac.Extras.AggregateService; using Autofac.Extras.AggregateService;
using Recyclarr.Cli.Cache; using Recyclarr.Cli.Cache;
using Recyclarr.Cli.Pipelines.CustomFormat.Api;
using Recyclarr.Cli.Pipelines.CustomFormat.Models; using Recyclarr.Cli.Pipelines.CustomFormat.Models;
using Recyclarr.Cli.Pipelines.CustomFormat.PipelinePhases; using Recyclarr.Cli.Pipelines.CustomFormat.PipelinePhases;
using Recyclarr.ServarrApi.Services;
namespace Recyclarr.Cli.Pipelines.CustomFormat; namespace Recyclarr.Cli.Pipelines.CustomFormat;
@ -13,7 +13,6 @@ public class CustomFormatAutofacModule : Module
{ {
builder.RegisterType<ProcessedCustomFormatCache>().As<IPipelineCache>().AsSelf().InstancePerLifetimeScope(); builder.RegisterType<ProcessedCustomFormatCache>().As<IPipelineCache>().AsSelf().InstancePerLifetimeScope();
builder.RegisterType<CustomFormatService>().As<ICustomFormatService>();
builder.RegisterType<CachePersister>().As<ICachePersister>(); builder.RegisterType<CachePersister>().As<ICachePersister>();
builder.RegisterType<CustomFormatDataLister>(); builder.RegisterType<CustomFormatDataLister>();

@ -1,5 +1,5 @@
using Recyclarr.Cli.Pipelines.CustomFormat.Api;
using Recyclarr.Config.Models; using Recyclarr.Config.Models;
using Recyclarr.ServarrApi.Services;
using Recyclarr.TrashGuide.CustomFormat; using Recyclarr.TrashGuide.CustomFormat;
namespace Recyclarr.Cli.Pipelines.CustomFormat.PipelinePhases; namespace Recyclarr.Cli.Pipelines.CustomFormat.PipelinePhases;

@ -1,5 +1,5 @@
using Recyclarr.Cli.Pipelines.CustomFormat.Api;
using Recyclarr.Config.Models; using Recyclarr.Config.Models;
using Recyclarr.ServarrApi.Services;
namespace Recyclarr.Cli.Pipelines.CustomFormat.PipelinePhases; namespace Recyclarr.Cli.Pipelines.CustomFormat.PipelinePhases;

@ -1,5 +1,6 @@
using Recyclarr.Cli.Pipelines.QualityProfile.Api;
using Recyclarr.Config.Models; using Recyclarr.Config.Models;
using Recyclarr.ServarrApi.Dto;
using Recyclarr.ServarrApi.Services;
namespace Recyclarr.Cli.Pipelines.QualityProfile.PipelinePhases; namespace Recyclarr.Cli.Pipelines.QualityProfile.PipelinePhases;

@ -1,5 +1,5 @@
using Recyclarr.Cli.Pipelines.QualityProfile.Api;
using Recyclarr.Config.Models; using Recyclarr.Config.Models;
using Recyclarr.ServarrApi.Services;
namespace Recyclarr.Cli.Pipelines.QualityProfile.PipelinePhases; namespace Recyclarr.Cli.Pipelines.QualityProfile.PipelinePhases;

@ -1,4 +1,4 @@
using Recyclarr.Cli.Pipelines.QualityProfile.Api; using Recyclarr.ServarrApi.Dto;
using Spectre.Console; using Spectre.Console;
using Spectre.Console.Rendering; using Spectre.Console.Rendering;

@ -1,6 +1,6 @@
using System.Text.Json; using System.Text.Json;
using System.Text.Json.JsonDiffPatch; using System.Text.Json.JsonDiffPatch;
using Recyclarr.Cli.Pipelines.QualityProfile.Api; using Recyclarr.ServarrApi.Dto;
namespace Recyclarr.Cli.Pipelines.QualityProfile.PipelinePhases; namespace Recyclarr.Cli.Pipelines.QualityProfile.PipelinePhases;

@ -1,9 +1,9 @@
using System.Diagnostics.CodeAnalysis; using System.Diagnostics.CodeAnalysis;
using FluentValidation.Results; using FluentValidation.Results;
using Recyclarr.Cli.Pipelines.QualityProfile.Api;
using Recyclarr.Common.Extensions; using Recyclarr.Common.Extensions;
using Recyclarr.Common.FluentValidation; using Recyclarr.Common.FluentValidation;
using Recyclarr.Config.Models; using Recyclarr.Config.Models;
using Recyclarr.ServarrApi.Dto;
namespace Recyclarr.Cli.Pipelines.QualityProfile.PipelinePhases; namespace Recyclarr.Cli.Pipelines.QualityProfile.PipelinePhases;

@ -1,7 +1,7 @@
using System.Diagnostics.CodeAnalysis; using System.Diagnostics.CodeAnalysis;
using Recyclarr.Cli.Pipelines.QualityProfile.Api;
using Recyclarr.Common.Extensions; using Recyclarr.Common.Extensions;
using Recyclarr.Config.Models; using Recyclarr.Config.Models;
using Recyclarr.ServarrApi.Dto;
namespace Recyclarr.Cli.Pipelines.QualityProfile; namespace Recyclarr.Cli.Pipelines.QualityProfile;

@ -1,7 +1,7 @@
using Autofac; using Autofac;
using Autofac.Extras.AggregateService; using Autofac.Extras.AggregateService;
using Recyclarr.Cli.Pipelines.QualityProfile.Api;
using Recyclarr.Cli.Pipelines.QualityProfile.PipelinePhases; using Recyclarr.Cli.Pipelines.QualityProfile.PipelinePhases;
using Recyclarr.ServarrApi.Services;
namespace Recyclarr.Cli.Pipelines.QualityProfile; namespace Recyclarr.Cli.Pipelines.QualityProfile;
@ -11,7 +11,6 @@ public class QualityProfileAutofacModule : Module
{ {
base.Load(builder); base.Load(builder);
builder.RegisterType<QualityProfileService>().As<IQualityProfileService>();
builder.RegisterType<QualityProfileStatCalculator>(); builder.RegisterType<QualityProfileStatCalculator>();
builder.RegisterAggregateService<IQualityProfilePipelinePhases>(); builder.RegisterAggregateService<IQualityProfilePipelinePhases>();

@ -1,5 +1,5 @@
using Recyclarr.Cli.Pipelines.QualityProfile.Api;
using Recyclarr.Common.Extensions; using Recyclarr.Common.Extensions;
using Recyclarr.ServarrApi.Dto;
namespace Recyclarr.Cli.Pipelines.QualityProfile; namespace Recyclarr.Cli.Pipelines.QualityProfile;
@ -111,12 +111,4 @@ public static class QualityProfileExtensions
return Math.Max(1000, maxExisting) + 1; return Math.Max(1000, maxExisting) + 1;
} }
public static QualityProfileDto ReverseItems(this QualityProfileDto dto)
{
static ICollection<ProfileItemDto> ReverseItemsImpl(IEnumerable<ProfileItemDto> items)
=> items.Reverse().Select(x => x with {Items = ReverseItemsImpl(x.Items)}).ToList();
return dto with {Items = ReverseItemsImpl(dto.Items).AsReadOnly()};
}
} }

@ -1,6 +1,6 @@
using Recyclarr.Cli.Pipelines.QualityProfile.Api;
using Recyclarr.Cli.Pipelines.QualityProfile.PipelinePhases; using Recyclarr.Cli.Pipelines.QualityProfile.PipelinePhases;
using Recyclarr.Common.Extensions; using Recyclarr.Common.Extensions;
using Recyclarr.ServarrApi.Dto;
namespace Recyclarr.Cli.Pipelines.QualityProfile; namespace Recyclarr.Cli.Pipelines.QualityProfile;

@ -1,5 +1,5 @@
using Recyclarr.Cli.Pipelines.QualityProfile.Api;
using Recyclarr.Cli.Pipelines.QualityProfile.PipelinePhases; using Recyclarr.Cli.Pipelines.QualityProfile.PipelinePhases;
using Recyclarr.ServarrApi.Dto;
namespace Recyclarr.Cli.Pipelines.QualityProfile; namespace Recyclarr.Cli.Pipelines.QualityProfile;

@ -1,5 +1,6 @@
using Recyclarr.Cli.Pipelines.QualitySize.Api;
using Recyclarr.Config.Models; using Recyclarr.Config.Models;
using Recyclarr.ServarrApi.Dto;
using Recyclarr.ServarrApi.Services;
namespace Recyclarr.Cli.Pipelines.QualitySize.PipelinePhases; namespace Recyclarr.Cli.Pipelines.QualitySize.PipelinePhases;

@ -1,5 +1,6 @@
using Recyclarr.Cli.Pipelines.QualitySize.Api;
using Recyclarr.Config.Models; using Recyclarr.Config.Models;
using Recyclarr.ServarrApi.Dto;
using Recyclarr.ServarrApi.Services;
namespace Recyclarr.Cli.Pipelines.QualitySize.PipelinePhases; namespace Recyclarr.Cli.Pipelines.QualitySize.PipelinePhases;

@ -1,5 +1,5 @@
using System.Collections.ObjectModel; using System.Collections.ObjectModel;
using Recyclarr.Cli.Pipelines.QualitySize.Api; using Recyclarr.ServarrApi.Dto;
using Recyclarr.TrashGuide.QualitySize; using Recyclarr.TrashGuide.QualitySize;
namespace Recyclarr.Cli.Pipelines.QualitySize.PipelinePhases; namespace Recyclarr.Cli.Pipelines.QualitySize.PipelinePhases;

@ -1,7 +1,7 @@
using Autofac; using Autofac;
using Autofac.Extras.AggregateService; using Autofac.Extras.AggregateService;
using Recyclarr.Cli.Pipelines.QualitySize.Api;
using Recyclarr.Cli.Pipelines.QualitySize.PipelinePhases; using Recyclarr.Cli.Pipelines.QualitySize.PipelinePhases;
using Recyclarr.ServarrApi.Services;
namespace Recyclarr.Cli.Pipelines.QualitySize; namespace Recyclarr.Cli.Pipelines.QualitySize;
@ -10,7 +10,6 @@ public class QualitySizeAutofacModule : Module
protected override void Load(ContainerBuilder builder) protected override void Load(ContainerBuilder builder)
{ {
base.Load(builder); base.Load(builder);
builder.RegisterType<QualityDefinitionService>().As<IQualityDefinitionService>();
builder.RegisterType<QualitySizeDataLister>(); builder.RegisterType<QualitySizeDataLister>();
builder.RegisterAggregateService<IQualitySizePipelinePhases>(); builder.RegisterAggregateService<IQualitySizePipelinePhases>();

@ -1,4 +1,4 @@
using Recyclarr.Cli.Pipelines.ReleaseProfile.Api.Objects; using Recyclarr.ServarrApi.Dto;
namespace Recyclarr.Cli.Pipelines.ReleaseProfile.Models; namespace Recyclarr.Cli.Pipelines.ReleaseProfile.Models;

@ -1,6 +1,6 @@
using Recyclarr.Cli.Pipelines.ReleaseProfile.Api;
using Recyclarr.Cli.Pipelines.ReleaseProfile.Api.Objects;
using Recyclarr.Config.Models; using Recyclarr.Config.Models;
using Recyclarr.ServarrApi.Dto;
using Recyclarr.ServarrApi.Services;
namespace Recyclarr.Cli.Pipelines.ReleaseProfile.PipelinePhases; namespace Recyclarr.Cli.Pipelines.ReleaseProfile.PipelinePhases;

@ -1,6 +1,6 @@
using Recyclarr.Cli.Pipelines.ReleaseProfile.Api;
using Recyclarr.Cli.Pipelines.ReleaseProfile.Models; using Recyclarr.Cli.Pipelines.ReleaseProfile.Models;
using Recyclarr.Config.Models; using Recyclarr.Config.Models;
using Recyclarr.ServarrApi.Services;
namespace Recyclarr.Cli.Pipelines.ReleaseProfile.PipelinePhases; namespace Recyclarr.Cli.Pipelines.ReleaseProfile.PipelinePhases;

@ -1,5 +1,5 @@
using Recyclarr.Cli.Pipelines.ReleaseProfile.Api.Objects;
using Recyclarr.Cli.Pipelines.ReleaseProfile.Models; using Recyclarr.Cli.Pipelines.ReleaseProfile.Models;
using Recyclarr.ServarrApi.Dto;
using Spectre.Console; using Spectre.Console;
namespace Recyclarr.Cli.Pipelines.ReleaseProfile.PipelinePhases; namespace Recyclarr.Cli.Pipelines.ReleaseProfile.PipelinePhases;

@ -1,7 +1,7 @@
using Recyclarr.Cli.Pipelines.ReleaseProfile.Api.Objects;
using Recyclarr.Cli.Pipelines.ReleaseProfile.Models; using Recyclarr.Cli.Pipelines.ReleaseProfile.Models;
using Recyclarr.Cli.Pipelines.Tags; using Recyclarr.Cli.Pipelines.Tags;
using Recyclarr.Common.Extensions; using Recyclarr.Common.Extensions;
using Recyclarr.ServarrApi.Dto;
namespace Recyclarr.Cli.Pipelines.ReleaseProfile.PipelinePhases; namespace Recyclarr.Cli.Pipelines.ReleaseProfile.PipelinePhases;

@ -1,9 +1,9 @@
using Autofac; using Autofac;
using Autofac.Extras.AggregateService; using Autofac.Extras.AggregateService;
using Autofac.Extras.Ordering; using Autofac.Extras.Ordering;
using Recyclarr.Cli.Pipelines.ReleaseProfile.Api;
using Recyclarr.Cli.Pipelines.ReleaseProfile.Filters; using Recyclarr.Cli.Pipelines.ReleaseProfile.Filters;
using Recyclarr.Cli.Pipelines.ReleaseProfile.PipelinePhases; using Recyclarr.Cli.Pipelines.ReleaseProfile.PipelinePhases;
using Recyclarr.ServarrApi.Services;
namespace Recyclarr.Cli.Pipelines.ReleaseProfile; namespace Recyclarr.Cli.Pipelines.ReleaseProfile;

@ -1,5 +1,6 @@
using Recyclarr.Cli.Pipelines.Tags.Api;
using Recyclarr.Config.Models; using Recyclarr.Config.Models;
using Recyclarr.ServarrApi.Dto;
using Recyclarr.ServarrApi.Services;
namespace Recyclarr.Cli.Pipelines.Tags.PipelinePhases; namespace Recyclarr.Cli.Pipelines.Tags.PipelinePhases;

@ -1,5 +1,6 @@
using Recyclarr.Cli.Pipelines.Tags.Api;
using Recyclarr.Config.Models; using Recyclarr.Config.Models;
using Recyclarr.ServarrApi.Dto;
using Recyclarr.ServarrApi.Services;
namespace Recyclarr.Cli.Pipelines.Tags.PipelinePhases; namespace Recyclarr.Cli.Pipelines.Tags.PipelinePhases;

@ -1,6 +1,6 @@
using System.Diagnostics.CodeAnalysis; using System.Diagnostics.CodeAnalysis;
using Recyclarr.Cli.Pipelines.Tags.Api;
using Recyclarr.Common.Extensions; using Recyclarr.Common.Extensions;
using Recyclarr.ServarrApi.Dto;
namespace Recyclarr.Cli.Pipelines.Tags.PipelinePhases; namespace Recyclarr.Cli.Pipelines.Tags.PipelinePhases;

@ -1,5 +1,5 @@
using Recyclarr.Cli.Pipelines.Tags.Api;
using Recyclarr.Common.Extensions; using Recyclarr.Common.Extensions;
using Recyclarr.ServarrApi.Dto;
namespace Recyclarr.Cli.Pipelines.Tags; namespace Recyclarr.Cli.Pipelines.Tags;

@ -1,7 +1,7 @@
using Autofac; using Autofac;
using Autofac.Extras.AggregateService; using Autofac.Extras.AggregateService;
using Recyclarr.Cli.Pipelines.Tags.Api;
using Recyclarr.Cli.Pipelines.Tags.PipelinePhases; using Recyclarr.Cli.Pipelines.Tags.PipelinePhases;
using Recyclarr.ServarrApi.Services;
namespace Recyclarr.Cli.Pipelines.Tags; namespace Recyclarr.Cli.Pipelines.Tags;

@ -1,9 +1,9 @@
using System.Diagnostics.CodeAnalysis; using System.Diagnostics.CodeAnalysis;
using Recyclarr.Cli.Console.Settings; using Recyclarr.Cli.Console.Settings;
using Recyclarr.Cli.Pipelines.CustomFormat.Api;
using Recyclarr.TrashLib.Compatibility.Sonarr; using Recyclarr.TrashLib.Compatibility.Sonarr;
using Recyclarr.Config; using Recyclarr.Config;
using Recyclarr.Config.Models; using Recyclarr.Config.Models;
using Recyclarr.ServarrApi.Services;
using Recyclarr.TrashLib.ExceptionTypes; using Recyclarr.TrashLib.ExceptionTypes;
using Recyclarr.TrashGuide.CustomFormat; using Recyclarr.TrashGuide.CustomFormat;
using Spectre.Console; using Spectre.Console;

@ -1,8 +1,8 @@
using Flurl.Http; using Flurl.Http;
using Recyclarr.Config.ExceptionTypes; using Recyclarr.Config.ExceptionTypes;
using Recyclarr.Config.Parsing.ErrorHandling; using Recyclarr.Config.Parsing.ErrorHandling;
using Recyclarr.ServarrApi.Http;
using Recyclarr.TrashLib.ExceptionTypes; using Recyclarr.TrashLib.ExceptionTypes;
using Recyclarr.TrashLib.Http;
using Recyclarr.VersionControl; using Recyclarr.VersionControl;
namespace Recyclarr.Cli.Processors.ErrorHandling; namespace Recyclarr.Cli.Processors.ErrorHandling;

@ -0,0 +1,20 @@
using Autofac;
using Recyclarr.ServarrApi.Http;
using Recyclarr.ServarrApi.Services;
using IFlurlClientFactory = Flurl.Http.Configuration.IFlurlClientFactory;
namespace Recyclarr.ServarrApi;
public class ApiServicesAutofacModule : Module
{
protected override void Load(ContainerBuilder builder)
{
base.Load(builder);
builder.RegisterType<SystemApiService>().As<ISystemApiService>();
builder.RegisterType<FlurlClientFactory>().As<IFlurlClientFactory>().SingleInstance();
builder.RegisterType<ServiceRequestBuilder>().As<IServiceRequestBuilder>();
builder.RegisterType<QualityProfileService>().As<IQualityProfileService>();
builder.RegisterType<CustomFormatService>().As<ICustomFormatService>();
builder.RegisterType<QualityDefinitionService>().As<IQualityDefinitionService>();
}
}

@ -1,7 +1,7 @@
using System.Text.Json.Serialization; using System.Text.Json.Serialization;
using JetBrains.Annotations; using JetBrains.Annotations;
namespace Recyclarr.Cli.Pipelines.QualityProfile.Api; namespace Recyclarr.ServarrApi.Dto;
[UsedImplicitly] [UsedImplicitly]
public record QualityProfileDto public record QualityProfileDto

@ -1,6 +1,6 @@
using JetBrains.Annotations; using JetBrains.Annotations;
namespace Recyclarr.Cli.Pipelines.QualitySize.Api; namespace Recyclarr.ServarrApi.Dto;
[UsedImplicitly(ImplicitUseTargetFlags.WithMembers)] [UsedImplicitly(ImplicitUseTargetFlags.WithMembers)]
public class ServiceQualityItem public class ServiceQualityItem

@ -1,7 +1,7 @@
using System.Text.Json.Serialization; using System.Text.Json.Serialization;
using JetBrains.Annotations; using JetBrains.Annotations;
namespace Recyclarr.Cli.Pipelines.ReleaseProfile.Api.Objects; namespace Recyclarr.ServarrApi.Dto;
[UsedImplicitly(ImplicitUseKindFlags.Assign, ImplicitUseTargetFlags.Members)] [UsedImplicitly(ImplicitUseKindFlags.Assign, ImplicitUseTargetFlags.Members)]
public class SonarrPreferredTerm public class SonarrPreferredTerm

@ -1,7 +1,7 @@
using JetBrains.Annotations; using JetBrains.Annotations;
using Recyclarr.Common; using Recyclarr.Common;
namespace Recyclarr.Cli.Pipelines.Tags.Api; namespace Recyclarr.ServarrApi.Dto;
public class SonarrTag public class SonarrTag
{ {

@ -1,4 +1,4 @@
namespace Recyclarr.TrashLib.ApiServices.System.Dto; namespace Recyclarr.ServarrApi.Dto;
public record SystemStatus( public record SystemStatus(
string AppName, string AppName,

@ -1,4 +1,4 @@
namespace Recyclarr.Cli.Pipelines.QualityProfile.Api; namespace Recyclarr.ServarrApi;
public static class DtoUtil public static class DtoUtil
{ {

@ -0,0 +1,15 @@
using Recyclarr.Common.Extensions;
using Recyclarr.ServarrApi.Dto;
namespace Recyclarr.ServarrApi.Extensions;
public static class QualityProfileApiExtensions
{
public static QualityProfileDto ReverseItems(this QualityProfileDto dto)
{
return dto with {Items = ReverseItemsImpl(dto.Items).AsReadOnly()};
static ICollection<ProfileItemDto> ReverseItemsImpl(IEnumerable<ProfileItemDto> items)
=> items.Reverse().Select(x => x with {Items = ReverseItemsImpl(x.Items)}).ToList();
}
}

@ -3,8 +3,9 @@ using Flurl.Http.Configuration;
using Recyclarr.Common.Networking; using Recyclarr.Common.Networking;
using Recyclarr.Json; using Recyclarr.Json;
using Recyclarr.Settings; using Recyclarr.Settings;
using Serilog;
namespace Recyclarr.TrashLib.Http; namespace Recyclarr.ServarrApi.Http;
public class FlurlClientFactory : IFlurlClientFactory public class FlurlClientFactory : IFlurlClientFactory
{ {

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

@ -1,8 +1,9 @@
using System.Text.Json; using System.Text.Json;
using Flurl; using Flurl;
using Flurl.Http.Configuration; using Flurl.Http.Configuration;
using Serilog;
namespace Recyclarr.TrashLib.Http; namespace Recyclarr.ServarrApi.Http;
public static class FlurlLogging public static class FlurlLogging
{ {

@ -1,6 +1,6 @@
using Flurl.Http; using Flurl.Http;
namespace Recyclarr.TrashLib.Http; namespace Recyclarr.ServarrApi.Http;
public interface IFlurlClientFactory public interface IFlurlClientFactory
{ {

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

@ -1,7 +1,7 @@
using Flurl.Http; using Flurl.Http;
using Recyclarr.Config.Models; using Recyclarr.Config.Models;
namespace Recyclarr.TrashLib.Http; namespace Recyclarr.ServarrApi.Http;
public class ServiceRequestBuilder : IServiceRequestBuilder public class ServiceRequestBuilder : IServiceRequestBuilder
{ {

@ -0,0 +1,12 @@
<Project Sdk="Microsoft.NET.Sdk">
<ItemGroup>
<PackageReference Include="Flurl.Http" />
<PackageReference Include="JetBrains.Annotations" />
<PackageReference Include="Serilog" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Recyclarr.Config\Recyclarr.Config.csproj" />
<ProjectReference Include="..\Recyclarr.Json\Recyclarr.Json.csproj" />
<ProjectReference Include="..\Recyclarr.Settings\Recyclarr.Settings.csproj" />
</ItemGroup>
</Project>

@ -1,9 +1,9 @@
using Flurl.Http; using Flurl.Http;
using Recyclarr.Config.Models; using Recyclarr.Config.Models;
using Recyclarr.ServarrApi.Http;
using Recyclarr.TrashGuide.CustomFormat; using Recyclarr.TrashGuide.CustomFormat;
using Recyclarr.TrashLib.Http;
namespace Recyclarr.Cli.Pipelines.CustomFormat.Api; namespace Recyclarr.ServarrApi.Services;
public class CustomFormatService : ICustomFormatService public class CustomFormatService : ICustomFormatService
{ {

@ -1,7 +1,7 @@
using Recyclarr.Config.Models; using Recyclarr.Config.Models;
using Recyclarr.TrashGuide.CustomFormat; using Recyclarr.TrashGuide.CustomFormat;
namespace Recyclarr.Cli.Pipelines.CustomFormat.Api; namespace Recyclarr.ServarrApi.Services;
public interface ICustomFormatService public interface ICustomFormatService
{ {

@ -1,6 +1,7 @@
using Recyclarr.Config.Models; using Recyclarr.Config.Models;
using Recyclarr.ServarrApi.Dto;
namespace Recyclarr.Cli.Pipelines.QualitySize.Api; namespace Recyclarr.ServarrApi.Services;
public interface IQualityDefinitionService public interface IQualityDefinitionService
{ {

@ -1,6 +1,7 @@
using Recyclarr.Config.Models; using Recyclarr.Config.Models;
using Recyclarr.ServarrApi.Dto;
namespace Recyclarr.Cli.Pipelines.QualityProfile.Api; namespace Recyclarr.ServarrApi.Services;
public interface IQualityProfileService public interface IQualityProfileService
{ {

@ -1,7 +1,7 @@
using Recyclarr.Cli.Pipelines.ReleaseProfile.Api.Objects;
using Recyclarr.Config.Models; using Recyclarr.Config.Models;
using Recyclarr.ServarrApi.Dto;
namespace Recyclarr.Cli.Pipelines.ReleaseProfile.Api; namespace Recyclarr.ServarrApi.Services;
public interface IReleaseProfileApiService public interface IReleaseProfileApiService
{ {

@ -1,6 +1,7 @@
using Recyclarr.Config.Models; using Recyclarr.Config.Models;
using Recyclarr.ServarrApi.Dto;
namespace Recyclarr.Cli.Pipelines.Tags.Api; namespace Recyclarr.ServarrApi.Services;
public interface ISonarrTagApiService public interface ISonarrTagApiService
{ {

@ -1,7 +1,7 @@
using Recyclarr.Config.Models; using Recyclarr.Config.Models;
using Recyclarr.TrashLib.ApiServices.System.Dto; using Recyclarr.ServarrApi.Dto;
namespace Recyclarr.TrashLib.ApiServices.System; namespace Recyclarr.ServarrApi.Services;
public interface ISystemApiService public interface ISystemApiService
{ {

@ -1,8 +1,9 @@
using Flurl.Http; using Flurl.Http;
using Recyclarr.Config.Models; using Recyclarr.Config.Models;
using Recyclarr.TrashLib.Http; using Recyclarr.ServarrApi.Dto;
using Recyclarr.ServarrApi.Http;
namespace Recyclarr.Cli.Pipelines.QualitySize.Api; namespace Recyclarr.ServarrApi.Services;
internal class QualityDefinitionService : IQualityDefinitionService internal class QualityDefinitionService : IQualityDefinitionService
{ {

@ -1,8 +1,10 @@
using Flurl.Http; using Flurl.Http;
using Recyclarr.Config.Models; using Recyclarr.Config.Models;
using Recyclarr.TrashLib.Http; using Recyclarr.ServarrApi.Dto;
using Recyclarr.ServarrApi.Extensions;
using Recyclarr.ServarrApi.Http;
namespace Recyclarr.Cli.Pipelines.QualityProfile.Api; namespace Recyclarr.ServarrApi.Services;
internal class QualityProfileService : IQualityProfileService internal class QualityProfileService : IQualityProfileService
{ {

@ -1,9 +1,9 @@
using Flurl.Http; using Flurl.Http;
using Recyclarr.Cli.Pipelines.ReleaseProfile.Api.Objects;
using Recyclarr.Config.Models; using Recyclarr.Config.Models;
using Recyclarr.TrashLib.Http; using Recyclarr.ServarrApi.Dto;
using Recyclarr.ServarrApi.Http;
namespace Recyclarr.Cli.Pipelines.ReleaseProfile.Api; namespace Recyclarr.ServarrApi.Services;
public class ReleaseProfileApiService : IReleaseProfileApiService public class ReleaseProfileApiService : IReleaseProfileApiService
{ {

@ -1,8 +1,9 @@
using Flurl.Http; using Flurl.Http;
using Recyclarr.Config.Models; using Recyclarr.Config.Models;
using Recyclarr.TrashLib.Http; using Recyclarr.ServarrApi.Dto;
using Recyclarr.ServarrApi.Http;
namespace Recyclarr.Cli.Pipelines.Tags.Api; namespace Recyclarr.ServarrApi.Services;
public class SonarrTagApiService : ISonarrTagApiService public class SonarrTagApiService : ISonarrTagApiService
{ {

@ -1,9 +1,9 @@
using Flurl.Http; using Flurl.Http;
using Recyclarr.Config.Models; using Recyclarr.Config.Models;
using Recyclarr.TrashLib.ApiServices.System.Dto; using Recyclarr.ServarrApi.Dto;
using Recyclarr.TrashLib.Http; using Recyclarr.ServarrApi.Http;
namespace Recyclarr.TrashLib.ApiServices.System; namespace Recyclarr.ServarrApi.Services;
public class SystemApiService : ISystemApiService public class SystemApiService : ISystemApiService
{ {

@ -1,15 +0,0 @@
using Autofac;
using Recyclarr.TrashLib.ApiServices.System;
namespace Recyclarr.TrashLib.ApiServices;
public class ApiServicesAutofacModule : Module
{
protected override void Load(ContainerBuilder builder)
{
base.Load(builder);
builder.RegisterType<SystemApiService>().As<ISystemApiService>();
builder.RegisterType<ServiceInformation>().As<IServiceInformation>()
.InstancePerLifetimeScope();
}
}

@ -11,6 +11,8 @@ public class CompatibilityAutofacModule : Module
base.Load(builder); base.Load(builder);
builder.RegisterType<ServiceAgnosticCapabilityEnforcer>(); builder.RegisterType<ServiceAgnosticCapabilityEnforcer>();
builder.RegisterType<ServiceInformation>().As<IServiceInformation>()
.InstancePerLifetimeScope();
// Sonarr // Sonarr
builder.RegisterType<SonarrCapabilityFetcher>().As<ISonarrCapabilityFetcher>(); builder.RegisterType<SonarrCapabilityFetcher>().As<ISonarrCapabilityFetcher>();

@ -1,6 +1,6 @@
using Recyclarr.Config.Models; using Recyclarr.Config.Models;
namespace Recyclarr.TrashLib.ApiServices.System; namespace Recyclarr.TrashLib.Compatibility;
public interface IServiceInformation public interface IServiceInformation
{ {

@ -1,5 +1,3 @@
using Recyclarr.TrashLib.ApiServices.System;
namespace Recyclarr.TrashLib.Compatibility.Radarr; namespace Recyclarr.TrashLib.Compatibility.Radarr;
public class RadarrCapabilityFetcher : ServiceCapabilityFetcher<RadarrCapabilities>, IRadarrCapabilityFetcher public class RadarrCapabilityFetcher : ServiceCapabilityFetcher<RadarrCapabilities>, IRadarrCapabilityFetcher

@ -1,5 +1,4 @@
using Recyclarr.Config.Models; using Recyclarr.Config.Models;
using Recyclarr.TrashLib.ApiServices.System;
namespace Recyclarr.TrashLib.Compatibility; namespace Recyclarr.TrashLib.Compatibility;

@ -1,7 +1,8 @@
using Flurl.Http; using Flurl.Http;
using Recyclarr.Config.Models; using Recyclarr.Config.Models;
using Recyclarr.ServarrApi.Services;
namespace Recyclarr.TrashLib.ApiServices.System; namespace Recyclarr.TrashLib.Compatibility;
public class ServiceInformation : IServiceInformation public class ServiceInformation : IServiceInformation
{ {

@ -1,5 +1,3 @@
using Recyclarr.TrashLib.ApiServices.System;
namespace Recyclarr.TrashLib.Compatibility.Sonarr; namespace Recyclarr.TrashLib.Compatibility.Sonarr;
public class SonarrCapabilityFetcher : ServiceCapabilityFetcher<SonarrCapabilities>, ISonarrCapabilityFetcher public class SonarrCapabilityFetcher : ServiceCapabilityFetcher<SonarrCapabilities>, ISonarrCapabilityFetcher

@ -1,6 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\Recyclarr.Config\Recyclarr.Config.csproj" /> <ProjectReference Include="..\Recyclarr.Config\Recyclarr.Config.csproj" />
<ProjectReference Include="..\Recyclarr.ServarrApi\Recyclarr.ServarrApi.csproj" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Autofac.Extras.Ordering" /> <PackageReference Include="Autofac.Extras.Ordering" />

@ -5,10 +5,9 @@ using Recyclarr.Common.FluentValidation;
using Recyclarr.Json; using Recyclarr.Json;
using Recyclarr.Platform; using Recyclarr.Platform;
using Recyclarr.Repo; using Recyclarr.Repo;
using Recyclarr.ServarrApi;
using Recyclarr.Settings; using Recyclarr.Settings;
using Recyclarr.TrashLib.ApiServices;
using Recyclarr.TrashLib.Compatibility; using Recyclarr.TrashLib.Compatibility;
using Recyclarr.TrashLib.Http;
using Recyclarr.VersionControl; using Recyclarr.VersionControl;
namespace Recyclarr.TrashLib; namespace Recyclarr.TrashLib;
@ -32,8 +31,6 @@ public class TrashLibAutofacModule : Module
builder.RegisterModule<JsonAutofacModule>(); builder.RegisterModule<JsonAutofacModule>();
builder.RegisterType<SettingsProvider>().As<ISettingsProvider>().SingleInstance(); builder.RegisterType<SettingsProvider>().As<ISettingsProvider>().SingleInstance();
builder.RegisterType<ServiceRequestBuilder>().As<IServiceRequestBuilder>();
builder.RegisterType<FlurlClientFactory>().As<IFlurlClientFactory>().SingleInstance();
} }
private static void CommonRegistrations(ContainerBuilder builder) private static void CommonRegistrations(ContainerBuilder builder)

@ -68,6 +68,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Recyclarr.Repo", "Recyclarr
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Recyclarr.Settings", "Recyclarr.Settings\Recyclarr.Settings.csproj", "{CDB0249D-18F2-4262-BAF3-3A3DB10E31F8}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Recyclarr.Settings", "Recyclarr.Settings\Recyclarr.Settings.csproj", "{CDB0249D-18F2-4262-BAF3-3A3DB10E31F8}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Recyclarr.ServarrApi", "Recyclarr.ServarrApi\Recyclarr.ServarrApi.csproj", "{5B48995A-1181-46AA-AC38-C040BDD3D7B7}"
EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU Debug|Any CPU = Debug|Any CPU
@ -178,6 +180,10 @@ Global
{CDB0249D-18F2-4262-BAF3-3A3DB10E31F8}.Debug|Any CPU.Build.0 = Debug|Any CPU {CDB0249D-18F2-4262-BAF3-3A3DB10E31F8}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CDB0249D-18F2-4262-BAF3-3A3DB10E31F8}.Release|Any CPU.ActiveCfg = Release|Any CPU {CDB0249D-18F2-4262-BAF3-3A3DB10E31F8}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CDB0249D-18F2-4262-BAF3-3A3DB10E31F8}.Release|Any CPU.Build.0 = Release|Any CPU {CDB0249D-18F2-4262-BAF3-3A3DB10E31F8}.Release|Any CPU.Build.0 = Release|Any CPU
{5B48995A-1181-46AA-AC38-C040BDD3D7B7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5B48995A-1181-46AA-AC38-C040BDD3D7B7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5B48995A-1181-46AA-AC38-C040BDD3D7B7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5B48995A-1181-46AA-AC38-C040BDD3D7B7}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection EndGlobalSection
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE

@ -114,4 +114,5 @@
<s:Boolean x:Key="/Default/UserDictionary/Words/=Persister/@EntryIndexedValue">True</s:Boolean> <s:Boolean x:Key="/Default/UserDictionary/Words/=Persister/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=radarr/@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/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Servarr/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Sonarr/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary> <s:Boolean x:Key="/Default/UserDictionary/Words/=Sonarr/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary>

@ -1,8 +1,8 @@
using System.Diagnostics.CodeAnalysis; using System.Diagnostics.CodeAnalysis;
using Recyclarr.Cli.Pipelines.QualityProfile; using Recyclarr.Cli.Pipelines.QualityProfile;
using Recyclarr.Cli.Pipelines.QualityProfile.Api;
using Recyclarr.Cli.Pipelines.QualityProfile.PipelinePhases; using Recyclarr.Cli.Pipelines.QualityProfile.PipelinePhases;
using Recyclarr.Config.Models; using Recyclarr.Config.Models;
using Recyclarr.ServarrApi.Dto;
namespace Recyclarr.Cli.TestLibrary; namespace Recyclarr.Cli.TestLibrary;

@ -1,8 +1,8 @@
using Flurl.Http.Testing; using Flurl.Http.Testing;
using Recyclarr.Cli.Pipelines.CustomFormat.Api;
using Recyclarr.Cli.TestLibrary; using Recyclarr.Cli.TestLibrary;
using Recyclarr.Common; using Recyclarr.Common;
using Recyclarr.Config.Models; using Recyclarr.Config.Models;
using Recyclarr.ServarrApi.Services;
namespace Recyclarr.Cli.Tests.Pipelines.CustomFormat.Api; namespace Recyclarr.Cli.Tests.Pipelines.CustomFormat.Api;

@ -1,5 +1,5 @@
using Recyclarr.Cli.Pipelines.QualityProfile.Api;
using Recyclarr.Cli.TestLibrary; using Recyclarr.Cli.TestLibrary;
using Recyclarr.ServarrApi.Dto;
namespace Recyclarr.Cli.Tests.Pipelines.QualityProfile.Api; namespace Recyclarr.Cli.Tests.Pipelines.QualityProfile.Api;

@ -1,8 +1,8 @@
using Recyclarr.Cli.Pipelines.QualityProfile; using Recyclarr.Cli.Pipelines.QualityProfile;
using Recyclarr.Cli.Pipelines.QualityProfile.Api;
using Recyclarr.Cli.Pipelines.QualityProfile.PipelinePhases; using Recyclarr.Cli.Pipelines.QualityProfile.PipelinePhases;
using Recyclarr.Cli.TestLibrary; using Recyclarr.Cli.TestLibrary;
using Recyclarr.Config.Models; using Recyclarr.Config.Models;
using Recyclarr.ServarrApi.Dto;
namespace Recyclarr.Cli.Tests.Pipelines.QualityProfile.PipelinePhases; namespace Recyclarr.Cli.Tests.Pipelines.QualityProfile.PipelinePhases;

@ -1,7 +1,7 @@
using Recyclarr.Cli.Pipelines.QualityProfile; using Recyclarr.Cli.Pipelines.QualityProfile;
using Recyclarr.Cli.Pipelines.QualityProfile.Api;
using Recyclarr.Cli.TestLibrary; using Recyclarr.Cli.TestLibrary;
using Recyclarr.Config.Models; using Recyclarr.Config.Models;
using Recyclarr.ServarrApi.Dto;
namespace Recyclarr.Cli.Tests.Pipelines.QualityProfile; namespace Recyclarr.Cli.Tests.Pipelines.QualityProfile;

@ -1,6 +1,7 @@
using Recyclarr.Cli.Pipelines.QualityProfile; using Recyclarr.Cli.Pipelines.QualityProfile;
using Recyclarr.Cli.Pipelines.QualityProfile.Api;
using Recyclarr.Cli.TestLibrary; using Recyclarr.Cli.TestLibrary;
using Recyclarr.ServarrApi.Dto;
using Recyclarr.ServarrApi.Extensions;
// ReSharper disable CollectionNeverUpdated.Local // ReSharper disable CollectionNeverUpdated.Local

@ -1,8 +1,8 @@
using Recyclarr.Cli.Pipelines.QualityProfile; using Recyclarr.Cli.Pipelines.QualityProfile;
using Recyclarr.Cli.Pipelines.QualityProfile.Api;
using Recyclarr.Cli.Pipelines.QualityProfile.PipelinePhases; using Recyclarr.Cli.Pipelines.QualityProfile.PipelinePhases;
using Recyclarr.Cli.TestLibrary; using Recyclarr.Cli.TestLibrary;
using Recyclarr.Config.Models; using Recyclarr.Config.Models;
using Recyclarr.ServarrApi.Dto;
namespace Recyclarr.Cli.Tests.Pipelines.QualityProfile; namespace Recyclarr.Cli.Tests.Pipelines.QualityProfile;

@ -1,9 +1,9 @@
using FluentValidation.TestHelper; using FluentValidation.TestHelper;
using Recyclarr.Cli.Pipelines.QualityProfile; using Recyclarr.Cli.Pipelines.QualityProfile;
using Recyclarr.Cli.Pipelines.QualityProfile.Api;
using Recyclarr.Cli.Pipelines.QualityProfile.PipelinePhases; using Recyclarr.Cli.Pipelines.QualityProfile.PipelinePhases;
using Recyclarr.Cli.TestLibrary; using Recyclarr.Cli.TestLibrary;
using Recyclarr.Config.Models; using Recyclarr.Config.Models;
using Recyclarr.ServarrApi.Dto;
namespace Recyclarr.Cli.Tests.Pipelines.QualityProfile; namespace Recyclarr.Cli.Tests.Pipelines.QualityProfile;

@ -1,5 +1,5 @@
using Recyclarr.Cli.Pipelines.QualitySize.Api;
using Recyclarr.Cli.Pipelines.QualitySize.PipelinePhases; using Recyclarr.Cli.Pipelines.QualitySize.PipelinePhases;
using Recyclarr.ServarrApi.Dto;
using Recyclarr.TrashGuide.QualitySize; using Recyclarr.TrashGuide.QualitySize;
namespace Recyclarr.Cli.Tests.Pipelines.QualitySize.PipelinePhases; namespace Recyclarr.Cli.Tests.Pipelines.QualitySize.PipelinePhases;

@ -1,6 +1,7 @@
using Recyclarr.Cli.Pipelines.Tags; using Recyclarr.Cli.Pipelines.Tags;
using Recyclarr.Cli.Pipelines.Tags.Api;
using Recyclarr.Cli.Pipelines.Tags.PipelinePhases; using Recyclarr.Cli.Pipelines.Tags.PipelinePhases;
using Recyclarr.ServarrApi.Dto;
using Recyclarr.ServarrApi.Services;
namespace Recyclarr.Cli.Tests.Pipelines.Tags.PipelinePhases; namespace Recyclarr.Cli.Tests.Pipelines.Tags.PipelinePhases;

@ -1,7 +1,8 @@
using Recyclarr.Cli.Pipelines.Tags; using Recyclarr.Cli.Pipelines.Tags;
using Recyclarr.Cli.Pipelines.Tags.Api;
using Recyclarr.Cli.Pipelines.Tags.PipelinePhases; using Recyclarr.Cli.Pipelines.Tags.PipelinePhases;
using Recyclarr.Config.Models; using Recyclarr.Config.Models;
using Recyclarr.ServarrApi.Dto;
using Recyclarr.ServarrApi.Services;
namespace Recyclarr.Cli.Tests.Pipelines.Tags.PipelinePhases; namespace Recyclarr.Cli.Tests.Pipelines.Tags.PipelinePhases;

@ -1,5 +1,5 @@
using Recyclarr.Cli.Pipelines.Tags.Api;
using Recyclarr.Cli.Pipelines.Tags.PipelinePhases; using Recyclarr.Cli.Pipelines.Tags.PipelinePhases;
using Recyclarr.ServarrApi.Dto;
namespace Recyclarr.Cli.Tests.Pipelines.Tags.PipelinePhases; namespace Recyclarr.Cli.Tests.Pipelines.Tags.PipelinePhases;

@ -3,7 +3,7 @@ using Autofac;
using Recyclarr.Platform; using Recyclarr.Platform;
using Recyclarr.TestLibrary; using Recyclarr.TestLibrary;
using Recyclarr.TestLibrary.Autofac; using Recyclarr.TestLibrary.Autofac;
using Recyclarr.TrashLib.ApiServices.System; using Recyclarr.TrashLib.Compatibility;
using Recyclarr.VersionControl; using Recyclarr.VersionControl;
namespace Recyclarr.TrashLib.TestLibrary; namespace Recyclarr.TrashLib.TestLibrary;

Loading…
Cancel
Save