100 lines
4.3 KiB
C#
100 lines
4.3 KiB
C#
using JSMR.Application.Circles.Queries.GetCreators;
|
|
using JSMR.Application.Circles.Queries.GetTags;
|
|
using JSMR.Application.Circles.Queries.Search;
|
|
using JSMR.Application.Common;
|
|
using JSMR.Application.Common.Caching;
|
|
using JSMR.Application.Creators.Ports;
|
|
using JSMR.Application.Creators.Queries.Search.Ports;
|
|
using JSMR.Application.Scanning.Ports;
|
|
using JSMR.Application.Tags.Ports;
|
|
using JSMR.Application.Tags.Queries.Search.Ports;
|
|
using JSMR.Application.VoiceWorks.Ports;
|
|
using JSMR.Application.VoiceWorks.Queries.Search;
|
|
using JSMR.Infrastructure.Caching;
|
|
using JSMR.Infrastructure.Caching.Adapters;
|
|
using JSMR.Infrastructure.Common.Languages;
|
|
using JSMR.Infrastructure.Common.SupportedLanguages;
|
|
using JSMR.Infrastructure.Common.Time;
|
|
using JSMR.Infrastructure.Data.Repositories.Circles;
|
|
using JSMR.Infrastructure.Data.Repositories.Creators;
|
|
using JSMR.Infrastructure.Data.Repositories.Tags;
|
|
using JSMR.Infrastructure.Data.Repositories.VoiceWorks;
|
|
using JSMR.Infrastructure.Http;
|
|
using JSMR.Infrastructure.Ingestion;
|
|
using JSMR.Infrastructure.Scanning;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
|
|
namespace JSMR.Infrastructure.DI;
|
|
|
|
public static class InfrastructureServiceCollectionExtensions
|
|
{
|
|
public static IServiceCollection AddInfrastructure(this IServiceCollection services)
|
|
{
|
|
services.AddScoped<ICircleSearchProvider, CircleSearchProvider>();
|
|
services.AddScoped<ICircleTagsProvider, CircleTagsProvider>();
|
|
services.AddScoped<ICircleCreatorsProvider, CircleCreatorsProvider>();
|
|
|
|
services.AddScoped<IVoiceWorkSearchProvider, VoiceWorkSearchProvider>();
|
|
services.AddScoped<IVoiceWorkFullTextSearch, MySqlVoiceWorkFullTextSearch>();
|
|
services.AddScoped<IVoiceWorkWriter, VoiceWorkWriter>();
|
|
|
|
services.AddKeyedScoped<IVoiceWorksScanner, JapaneseVoiceWorksScanner>(Locale.Japanese);
|
|
services.AddKeyedScoped<IVoiceWorksScanner, EnglishVoiceWorksScanner>(Locale.English);
|
|
|
|
services.AddKeyedScoped<IVoiceWorkUpdater, VoiceWorkUpdater>(Locale.Japanese);
|
|
services.AddKeyedScoped<IVoiceWorkUpdater, EnglishVoiceWorkUpdater>(Locale.English);
|
|
|
|
services.AddKeyedScoped<ISupportedLanguage, JapaneseLanguage>(Locale.Japanese);
|
|
services.AddKeyedScoped<ISupportedLanguage, EnglishLanguage>(Locale.English);
|
|
services.AddKeyedScoped<ISupportedLanguage, SimplifiedChineseLanguage>(Locale.ChineseSimplified);
|
|
services.AddKeyedScoped<ISupportedLanguage, TraditionalChineseLanguage>(Locale.ChineseTraditional);
|
|
services.AddKeyedScoped<ISupportedLanguage, KoreanLanguage>(Locale.Korean);
|
|
|
|
services.AddScoped<ITagSearchProvider, TagSearchProvider>();
|
|
services.AddScoped<ITagWriter, TagWriter>();
|
|
|
|
services.AddScoped<ICreatorSearchProvider, CreatorSearchProvider>();
|
|
services.AddScoped<ICreatorWriter, CreatorWriter>();
|
|
|
|
services.AddSingleton<ICache, MemoryCacheAdapter>();
|
|
services.AddSingleton<ISpamCircleCache, SpamCircleCache>();
|
|
|
|
services.AddHttpClient<IHttpService, HttpService>(client =>
|
|
{
|
|
client.DefaultRequestHeaders.UserAgent.ParseAdd("JSMR/1.0");
|
|
});
|
|
|
|
services.AddScoped<IHttpService, HttpService>();
|
|
services.AddScoped<IHtmlLoader, HtmlLoader>();
|
|
|
|
services.AddSingleton<ILanguageIdentifier, LanguageIdentifier>();
|
|
|
|
services.AddSingleton<IClock, Clock>();
|
|
services.AddSingleton<ITimeProvider, TokyoTimeProvider>();
|
|
|
|
return services;
|
|
}
|
|
|
|
//public static IServiceCollection AddDLSiteClient(this IServiceCollection services)
|
|
//{
|
|
// var retryPolicy = HttpPolicyExtensions
|
|
// .HandleTransientHttpError()
|
|
// .OrResult(msg => (int)msg.StatusCode == 429) // Too Many Requests
|
|
// .WaitAndRetryAsync(new[]
|
|
// {
|
|
// TimeSpan.FromMilliseconds(200),
|
|
// TimeSpan.FromMilliseconds(500),
|
|
// TimeSpan.FromSeconds(1.5)
|
|
// });
|
|
|
|
// services.AddHttpClient<IDLSiteClient, DLSiteClient>(c =>
|
|
// {
|
|
// c.BaseAddress = new Uri("https://www.dlsite.com/");
|
|
// c.DefaultRequestHeaders.UserAgent.ParseAdd("JSMR/1.0 (+contact@example.com)");
|
|
// c.Timeout = TimeSpan.FromSeconds(15);
|
|
// })
|
|
// .AddPolicyHandler(retryPolicy);
|
|
|
|
// return services;
|
|
//}
|
|
} |