using Microsoft.AspNetCore.Authorization; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using RdtClient.Service.BackgroundServices; using RdtClient.Service.Handlers; using RdtClient.Service.Middleware; using RdtClient.Service.Services; using RdtClient.Service.Services.TorrentClients; namespace RdtClient.Service; public static class DiConfig { public const String RD_CLIENT = "RdClient"; public static void RegisterRdtServices(this IServiceCollection services) { services.AddScoped(); services.AddScoped(); services.AddScoped(); services.AddScoped(); services.AddScoped(); services.AddScoped(); services.AddScoped(); services.AddScoped(); services.AddScoped(); services.AddScoped(); services.AddSingleton(); services.AddHostedService(); services.AddHostedService(); services.AddHostedService(); services.AddHostedService(); services.AddHostedService(); } public static void RegisterHttpClients(this IServiceCollection services) { services.AddHttpClient(); services.AddHttpClient(RD_CLIENT) .AddHttpMessageHandler(sp => new RateLimitingHandler(sp.GetRequiredService>(), 60, TimeSpan.FromSeconds(60))) .SetHandlerLifetime(Timeout.InfiniteTimeSpan); } }