feat: added auth hook using RabbitMQ on client for login continue
This commit is contained in:
86
JOBot.TClient/Startup.cs
Normal file
86
JOBot.TClient/Startup.cs
Normal file
@@ -0,0 +1,86 @@
|
||||
using Grpc.Core;
|
||||
using Grpc.Net.Client;
|
||||
using JOBot.Infrastructure.Config;
|
||||
using JOBot.Proto;
|
||||
using JOBot.TClient.Commands.Buttons;
|
||||
using JOBot.TClient.Commands.Commands;
|
||||
using JOBot.TClient.Core.HostedServices;
|
||||
using JOBot.TClient.Queues;
|
||||
using JOBot.TClient.Services;
|
||||
using JOBot.TClient.Statements;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using RabbitMQ.Client;
|
||||
using RabbitMQ.Client.Events;
|
||||
using Telegram.Bot;
|
||||
|
||||
namespace JOBot.TClient;
|
||||
|
||||
public static class Startup
|
||||
{
|
||||
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>();
|
||||
services.AddScoped<MenuCommand>();
|
||||
services.AddScoped<InfoCommand>();
|
||||
|
||||
//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
|
||||
|
||||
#region RabbitMQ Clients
|
||||
|
||||
var factory = new ConnectionFactory { HostName = "localhost" };
|
||||
using var connection = factory.CreateConnectionAsync().Result;
|
||||
var channel = connection.CreateChannelAsync().Result;
|
||||
|
||||
channel.QueueDeclareAsync(
|
||||
RabbitQueues.AuthQueue,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
arguments: null).Wait();
|
||||
|
||||
services.AddSingleton<AuthQueue>();
|
||||
|
||||
#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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user