private async Task <ReplyResult> ReplyToMessage(ResponseSender responseSender, Message message) { var strategy = _responseStrategyFactory.Create(responseSender, message.Text); var connectionState = await strategy.Reply(message.MessageId); _notification.Success("Server Replied", strategy.Message); return(connectionState); }
/// <summary> /// Default constructor. /// </summary> public IMAP_Session() { m_pAuthentications = new Dictionary<string,AUTH_SASL_ServerMechanism>(StringComparer.CurrentCultureIgnoreCase); m_pCapabilities = new List<string>(); m_pCapabilities.AddRange(new string[]{"IMAP4rev1","NAMESPACE","QUOTA","ACL","IDLE","ENABLE","UTF8=ACCEPT","SASL-IR"}); m_pResponseSender = new ResponseSender(this); }
private async Task HandleClient(IConnectionClient tcpClient) { var clientId = tcpClient.GetId(); _notification.Warning("Server", $"Client{clientId} connected!"); var responseSender = new ResponseSender(tcpClient); await HandelNewMessage(tcpClient, responseSender); _notification.Error("Server", $"Client{clientId} dropped out"); }
private async Task HandelNewMessage(IConnectionClient tcpClient, ResponseSender responseSender) { string message = await GetNewMessage(tcpClient); if (message == null) { return; } var messageData = MessageFactory.Create(message); _notification.Info($"Client {tcpClient.GetId()} said", messageData.Text); _ = Task.Run(() => ReplyToMessage(responseSender, messageData)); await HandelNewMessage(tcpClient, responseSender); }
public async Task SendResponsesInPrivateChat() { var client = Substitute.For <ITelegramBotClient>(); var sender = new ResponseSender(client); var chat = new Chat() { Id = 1, Type = ChatType.Private }; var message = new Message() { Chat = chat }; client.SendTextMessageAsync(Arg.Is <ChatId>(r => r.Identifier == chat.Id), "1", parseMode: ParseMode.Default, disableWebPagePreview: Arg.Any <bool>()) .Returns(new Message() { MessageId = 1, Chat = chat, Text = "1", }); await using var enumerator = sender.HandleMessageAsync(message, _ => new MessageResponse[] { "1", "2", "3", }.ToAsyncEnumerable()).GetAsyncEnumerator(); Assert.True(await enumerator.MoveNextAsync()); await client.Received(1).SendChatActionAsync(Arg.Is <ChatId>(r => r.Identifier == chat.Id), ChatAction.Typing); await client.Received(1).SendTextMessageAsync(Arg.Is <ChatId>(r => r.Identifier == chat.Id), "1", disableWebPagePreview: Arg.Any <bool>()); await client.DidNotReceiveWithAnyArgs().EditMessageTextAsync(default !, default !);
public async Task SendResponseInPrivateChat() { var client = Substitute.For <ITelegramBotClient>(); var sender = new ResponseSender(client); var chat = new Chat() { Id = 1, Type = ChatType.Private }; var message = new Message() { Chat = chat }; const string ResponseText = "Response"; await sender.HandleMessageAsync(message, _ => new MessageResponseAsyncEnumeratorWrapper(ResponseText)).ToArrayAsync(); await client.Received(1).SendChatActionAsync(Arg.Is <ChatId>(r => r.Identifier == chat.Id), ChatAction.Typing); await client.Received(1).SendTextMessageAsync(Arg.Is <ChatId>(r => r.Identifier == chat.Id), ResponseText, parseMode: ParseMode.Default, disableWebPagePreview: Arg.Any <bool>()); }
private void SendResponse(IBasicProperties props,byte[] response,ulong tag,bool worked) { ResponseSender rs = new ResponseSender(); Thread responseThread = new Thread(() => rs.SendResponseToClient(props, response, tag, worked)); responseThread.Start(); //rs.SendResponseToClient(props, response, tag, worked); }