mirror of
https://github.com/Cleanuparr/Cleanuparr.git
synced 2026-01-16 01:38:02 -05:00
89 lines
4.2 KiB
C#
89 lines
4.2 KiB
C#
using System.Net;
|
|
using Data.Models.Configuration.General;
|
|
using Data.Models.Arr;
|
|
using Infrastructure.Health;
|
|
using Infrastructure.Http;
|
|
using Infrastructure.Http.DynamicHttpClientSystem;
|
|
using Infrastructure.Verticals.DownloadClient.Deluge;
|
|
using Infrastructure.Verticals.DownloadClient.QBittorrent;
|
|
using Infrastructure.Verticals.DownloadClient.Transmission;
|
|
using Infrastructure.Verticals.DownloadRemover.Consumers;
|
|
using Infrastructure.Verticals.Notifications.Consumers;
|
|
using Infrastructure.Verticals.Notifications.Models;
|
|
using MassTransit;
|
|
using Polly;
|
|
using Polly.Extensions.Http;
|
|
|
|
namespace Executable.DependencyInjection;
|
|
|
|
public static class MainDI
|
|
{
|
|
public static IServiceCollection AddInfrastructure(this IServiceCollection services, IConfiguration configuration) =>
|
|
services
|
|
.AddLogging(builder => builder.ClearProviders().AddConsole())
|
|
.AddHttpClients(configuration)
|
|
.AddMemoryCache(options => {
|
|
options.ExpirationScanFrequency = TimeSpan.FromMinutes(1);
|
|
})
|
|
.AddServices()
|
|
.AddHealthServices()
|
|
.AddQuartzServices(configuration)
|
|
.AddNotifications(configuration)
|
|
.AddMassTransit(config =>
|
|
{
|
|
config.AddConsumer<DownloadRemoverConsumer<SearchItem>>();
|
|
config.AddConsumer<DownloadRemoverConsumer<SonarrSearchItem>>();
|
|
|
|
config.AddConsumer<NotificationConsumer<FailedImportStrikeNotification>>();
|
|
config.AddConsumer<NotificationConsumer<StalledStrikeNotification>>();
|
|
config.AddConsumer<NotificationConsumer<SlowStrikeNotification>>();
|
|
config.AddConsumer<NotificationConsumer<QueueItemDeletedNotification>>();
|
|
config.AddConsumer<NotificationConsumer<DownloadCleanedNotification>>();
|
|
config.AddConsumer<NotificationConsumer<CategoryChangedNotification>>();
|
|
|
|
config.UsingInMemory((context, cfg) =>
|
|
{
|
|
cfg.ReceiveEndpoint("download-remover-queue", e =>
|
|
{
|
|
e.ConfigureConsumer<DownloadRemoverConsumer<SearchItem>>(context);
|
|
e.ConfigureConsumer<DownloadRemoverConsumer<SonarrSearchItem>>(context);
|
|
e.ConcurrentMessageLimit = 1;
|
|
e.PrefetchCount = 1;
|
|
});
|
|
|
|
cfg.ReceiveEndpoint("notification-queue", e =>
|
|
{
|
|
e.ConfigureConsumer<NotificationConsumer<FailedImportStrikeNotification>>(context);
|
|
e.ConfigureConsumer<NotificationConsumer<StalledStrikeNotification>>(context);
|
|
e.ConfigureConsumer<NotificationConsumer<SlowStrikeNotification>>(context);
|
|
e.ConfigureConsumer<NotificationConsumer<QueueItemDeletedNotification>>(context);
|
|
e.ConfigureConsumer<NotificationConsumer<DownloadCleanedNotification>>(context);
|
|
e.ConfigureConsumer<NotificationConsumer<CategoryChangedNotification>>(context);
|
|
e.ConcurrentMessageLimit = 1;
|
|
e.PrefetchCount = 1;
|
|
});
|
|
});
|
|
});
|
|
|
|
private static IServiceCollection AddHttpClients(this IServiceCollection services, IConfiguration configuration)
|
|
{
|
|
// Add the dynamic HTTP client system - this replaces all the previous static configurations
|
|
services.AddDynamicHttpClients();
|
|
|
|
// Add the dynamic HTTP client provider that uses the new system
|
|
services.AddSingleton<IDynamicHttpClientProvider, DynamicHttpClientProvider>();
|
|
|
|
return services;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Adds health check services to the service collection
|
|
/// </summary>
|
|
private static IServiceCollection AddHealthServices(this IServiceCollection services) =>
|
|
services
|
|
// Register the health check service
|
|
.AddSingleton<IHealthCheckService, HealthCheckService>()
|
|
|
|
// Register the background service for periodic health checks
|
|
.AddHostedService<HealthCheckBackgroundService>();
|
|
} |