Example #1
0
        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);
        }
Example #2
0
        /// <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);
        }
Example #3
0
        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");
        }
Example #4
0
        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);
        }
Example #5
0
        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 !);
Example #6
0
        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);
 }