48 lines
1.9 KiB
C#
48 lines
1.9 KiB
C#
using System;
|
|
using CRAWLER.Parsing;
|
|
using CRAWLER.Services;
|
|
using Microsoft.Extensions.Configuration;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
using Microsoft.Extensions.Hosting;
|
|
|
|
namespace CRAWLER;
|
|
|
|
internal static class AppHost
|
|
{
|
|
public static IHost Create()
|
|
{
|
|
return Host.CreateDefaultBuilder()
|
|
.UseContentRoot(AppContext.BaseDirectory)
|
|
.ConfigureAppConfiguration((_, config) =>
|
|
{
|
|
config.Sources.Clear();
|
|
config.SetBasePath(AppContext.BaseDirectory);
|
|
config.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);
|
|
config.AddEnvironmentVariables();
|
|
})
|
|
.ConfigureServices((context, services) =>
|
|
{
|
|
services.AddSingleton<IDatabaseConnectionFactory, SqlServerConnectionFactory>();
|
|
services.AddSingleton<DatabaseInitializer>();
|
|
services.AddSingleton<InstrumentRepository>();
|
|
services.AddSingleton<CatalogPageParser>();
|
|
services.AddSingleton<DetailPageParser>();
|
|
services.AddSingleton<KtoPoveritClient>();
|
|
services.AddSingleton<PdfStorageService>();
|
|
services.AddSingleton<InstrumentCatalogService>();
|
|
services.AddSingleton<IPdfOpener, PdfShellService>();
|
|
services.AddSingleton<IFilePickerService, FilePickerService>();
|
|
services.AddTransient<MainWindow>(provider => new MainWindow(
|
|
provider.GetRequiredService<InstrumentCatalogService>(),
|
|
provider.GetRequiredService<IPdfOpener>(),
|
|
provider.GetRequiredService<IFilePickerService>()));
|
|
})
|
|
.UseDefaultServiceProvider((_, options) =>
|
|
{
|
|
options.ValidateOnBuild = true;
|
|
options.ValidateScopes = true;
|
|
})
|
|
.Build();
|
|
}
|
|
}
|