using Grpc.Core; using Grpc.Net.Client; using JOBot.Proto; using JOBot.TClient.Commands; using JOBot.TClient.Core.Services; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Telegram.Bot; namespace JOBot.TClient; public static class DependencyInjection { public static IServiceCollection ConfigureServices(this IServiceCollection services, IConfiguration config) { services.AddSingleton(config); services.AddScoped(_ => GrpcChannel.ForAddress(config.GetValue("BackendHost") ?? throw new MissingFieldException("Host is not defined"))); //Commands services.AddScoped(); services.AddSingleton(); //gRPC Clients services.AddScoped(); // Telegram Bot services.AddSingleton(_ => new TelegramBotClient(config.GetValue("TelegramToken") ?? throw new MissingFieldException("TelegramToken is not set"))); services.AddLogging(builder => builder.AddConsole()); return services; } }