using System.Net; using System.Reflection; using CouchDB.Driver.DependencyInjection; using MassTransit; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; using Server.DB; using Server.Services; var builder = Host.CreateApplicationBuilder(); var configurationRoot = builder.Configuration.AddJsonFile("settings.json", false, true) .AddEnvironmentVariables().Build(); builder.Services.AddLogging(); builder.Logging.AddFile("Logs/Server-{Date}.log", LogLevel.Debug); builder.Logging.AddFile("Logs/Server-{Date}.json.log", isJson: true, minimumLevel: LogLevel.Debug); builder.Services.AddCouchContext(cfg => { cfg.UseEndpoint(configurationRoot["DB:Endpoint"] ?? throw new InvalidOperationException()) .UseBasicAuthentication(configurationRoot["DB:User"] ?? throw new InvalidOperationException(), configurationRoot["DB:Password"] ?? throw new InvalidOperationException()) .EnsureDatabaseExists(); }); builder.Services.AddSingleton(); builder.Services.AddHostedService(provider => provider.GetService() ?? throw new InvalidOperationException()); builder.Services.AddMassTransit(x => { x.UsingInMemory((context, configurator) => { configurator.ConfigureEndpoints(context); }); x.AddMediator(cfg => { cfg.AddConsumers(Assembly.GetExecutingAssembly()); }); }); builder.Services.AddHostedService(provider => new WonderkingAuthServer(IPAddress.Any, 10001, provider.GetService>() ?? throw new InvalidOperationException(), provider.GetService() ?? throw new InvalidOperationException())); using var host = builder.Build(); await host.RunAsync();