-
Notifications
You must be signed in to change notification settings - Fork 0
/
Program.cs
34 lines (30 loc) · 2.34 KB
/
Program.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using System.Globalization;
using Telegram.Bot;
CreateHostBuilder(args).Build().Run();
IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((context, builder) => {
builder.AddJsonFile("Settings.json");
builder.AddJsonFile($"Settings.{context.HostingEnvironment.EnvironmentName}.json", true);
builder.AddJsonFile("Settings.Local.json", true);
builder.AddEnvironmentVariables();
builder.AddCommandLine(args);
})
.ConfigureServices((context, services) => {
services.AddLogging(builder => builder.SetMinimumLevel(LogLevel.Debug).AddConsole().AddFile("Logs/log-{Date}.txt"));
services.Configure<TelegramOptions>(context.Configuration.GetSection("Telegram"));
services.Configure<PriceChartOptionsList>(context.Configuration.GetSection("PriceChartOptions"));
services.AddLogging(builder => builder.AddConsole());
services.AddSingleton<IFormatProvider>(CultureInfo.GetCultureInfo("en"));
services.AddSingleton(provider => new TelegramBotClient(provider.GetRequiredService<IOptions<TelegramOptions>>().Value.BotSecret));
services.AddHostedService(provider => new ChartServices.BitcoinChartService(provider, provider.GetRequiredService<IOptions<PriceChartOptionsList>>().Value.Bitcoin));
services.AddHostedService(provider => new ChartServices.EthereumChartService(provider, provider.GetRequiredService<IOptions<PriceChartOptionsList>>().Value.Ethereum));
services.AddHostedService(provider => new ChartServices.TezosChartService(provider, provider.GetRequiredService<IOptions<PriceChartOptionsList>>().Value.Tezos));
services.AddHostedService(provider => new ChartServices.ToncoinChartService(provider, provider.GetRequiredService<IOptions<PriceChartOptionsList>>().Value.Toncoin));
services.AddHostedService(provider => new ChartServices.MinaChartService(provider, provider.GetRequiredService<IOptions<PriceChartOptionsList>>().Value.Mina));
});