2022-06-08 03:48:13 +00:00
|
|
|
using System.Collections.Generic;
|
2021-09-27 12:42:46 +00:00
|
|
|
using Microsoft.Extensions.DependencyInjection;
|
2022-06-08 03:48:13 +00:00
|
|
|
using Microsoft.Extensions.Logging;
|
2022-02-11 05:05:51 +00:00
|
|
|
using Wabbajack.Downloaders.Bethesda;
|
2021-09-27 12:42:46 +00:00
|
|
|
using Wabbajack.Downloaders.Http;
|
2022-06-08 03:48:13 +00:00
|
|
|
using Wabbajack.Downloaders.Interfaces;
|
2021-09-27 12:42:46 +00:00
|
|
|
using Wabbajack.Downloaders.IPS4OAuth2Downloader;
|
2022-02-27 21:31:13 +00:00
|
|
|
using Wabbajack.Downloaders.Manual;
|
2021-09-27 12:42:46 +00:00
|
|
|
using Wabbajack.Downloaders.MediaFire;
|
|
|
|
using Wabbajack.Downloaders.ModDB;
|
2022-10-18 04:48:49 +00:00
|
|
|
using Wabbajack.Downloaders.VerificationCache;
|
2021-09-27 12:42:46 +00:00
|
|
|
using Wabbajack.DTOs.JsonConverters;
|
2021-11-10 23:13:02 +00:00
|
|
|
using Wabbajack.Networking.WabbajackClientApi;
|
2022-06-08 03:48:13 +00:00
|
|
|
using Wabbajack.RateLimiter;
|
2021-09-27 12:42:46 +00:00
|
|
|
|
2021-10-23 16:51:17 +00:00
|
|
|
namespace Wabbajack.Downloaders;
|
|
|
|
|
|
|
|
public static class ServiceExtensions
|
2021-09-27 12:42:46 +00:00
|
|
|
{
|
2022-06-08 03:48:13 +00:00
|
|
|
public static IServiceCollection AddDownloadDispatcher(this IServiceCollection services, bool useLoginDownloaders = true, bool useProxyCache = true)
|
2021-09-27 12:42:46 +00:00
|
|
|
{
|
2022-06-08 03:48:13 +00:00
|
|
|
if (useLoginDownloaders)
|
|
|
|
{
|
|
|
|
services
|
|
|
|
.AddDTOConverters()
|
|
|
|
.AddDTOSerializer()
|
|
|
|
.AddGoogleDriveDownloader()
|
|
|
|
.AddHttpDownloader()
|
|
|
|
.AddMegaDownloader()
|
|
|
|
.AddMediaFireDownloader()
|
|
|
|
.AddModDBDownloader()
|
|
|
|
.AddNexusDownloader()
|
|
|
|
.AddIPS4OAuth2Downloaders()
|
|
|
|
.AddWabbajackCDNDownloader()
|
|
|
|
.AddGameFileDownloader()
|
|
|
|
.AddBethesdaDownloader()
|
|
|
|
.AddWabbajackClient()
|
|
|
|
.AddManualDownloader();
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
services
|
|
|
|
.AddDTOConverters()
|
|
|
|
.AddDTOSerializer()
|
|
|
|
.AddGoogleDriveDownloader()
|
|
|
|
.AddHttpDownloader()
|
|
|
|
.AddMegaDownloader()
|
|
|
|
.AddMediaFireDownloader()
|
|
|
|
.AddModDBDownloader()
|
|
|
|
.AddWabbajackCDNDownloader()
|
|
|
|
.AddWabbajackClient();
|
|
|
|
}
|
|
|
|
|
2022-10-18 04:48:49 +00:00
|
|
|
services.AddSingleton(s =>
|
2022-06-08 03:48:13 +00:00
|
|
|
new DownloadDispatcher(s.GetRequiredService<ILogger<DownloadDispatcher>>(),
|
2022-10-18 04:48:49 +00:00
|
|
|
s.GetRequiredService<IEnumerable<IDownloader>>(),
|
|
|
|
s.GetRequiredService<IResource<DownloadDispatcher>>(),
|
|
|
|
s.GetRequiredService<Client>(),
|
|
|
|
s.GetRequiredService<IVerificationCache>(),
|
|
|
|
useProxyCache));
|
2022-06-08 03:48:13 +00:00
|
|
|
|
|
|
|
return services;
|
2021-09-27 12:42:46 +00:00
|
|
|
}
|
|
|
|
}
|