55 lines
1.9 KiB
C#
55 lines
1.9 KiB
C#
using Grpc.Core;
|
|
using Grpc.Net.Client;
|
|
using JOBot.Proto;
|
|
using JOBot.TClient.Commands;
|
|
using JOBot.TClient.Commands.Buttons;
|
|
using JOBot.TClient.Core.HostedServices;
|
|
using JOBot.TClient.Services;
|
|
using JOBot.TClient.Statements;
|
|
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<ChannelBase, GrpcChannel>(_ => GrpcChannel.ForAddress(config.GetValue<string>("BackendHost")
|
|
?? throw new MissingFieldException("Host is not defined")));
|
|
|
|
#region Commands
|
|
services.AddScoped<StartCommand>();
|
|
|
|
//buttons
|
|
services.AddScoped<EulaAgreementButtonCommand>();
|
|
#endregion
|
|
|
|
#region gRPC Clients
|
|
services.AddGrpcClient<User.UserClient>(o => o.Address = new Uri("http://backend:5001"));
|
|
#endregion
|
|
|
|
#region Services
|
|
services.AddSingleton<UserService>();
|
|
services.AddScoped<PrepareUserService>();
|
|
services.AddScoped<MenuService>();
|
|
#endregion
|
|
|
|
#region States
|
|
services.AddScoped<PrepareUserState>();
|
|
#endregion
|
|
|
|
// Bot service
|
|
services.AddHostedService<BotBackgroundService>();
|
|
services.AddSingleton<ITelegramBotClient>(_ =>
|
|
new TelegramBotClient(config.GetValue<string>("TelegramToken")
|
|
?? throw new MissingFieldException("TelegramToken is not set")));
|
|
|
|
services.AddLogging(builder => builder.AddConsole());
|
|
return services;
|
|
}
|
|
} |