Exemplo n.º 1
0
        public async Task <ChatBotResult> Run(ChatMessageSentEvent message)
        {
            var chatRoomData = CalculateChatRoomId(message.Contents.Destination);

            if (!chatRoomData.IsCorrect)
            {
                return(new ChatBotResult());
            }

            var stockRequest = CalculateRequestData(message.Contents.Contents);

            if (!stockRequest.IsCorrect)
            {
                return(new ChatBotResult());
            }

            // https://stooq.com/q/l/?s=aapl.us&f=sd2t2ohlcv&h&e=csv
            var request = new RestRequest(Method.GET)
                          .AddQueryParameter("s", $"{stockRequest.Query.ToLower()}.us")
                          .AddQueryParameter("f", "sd2t2ohlcv")
                          .AddQueryParameter("h", string.Empty)
                          .AddQueryParameter("e", "csv");

            var response = await _restClient.ExecuteGetTaskAsync(request);

            if (!response.IsSuccessful)
            {
                await _sendMessage.Run(new ChatMessage
                {
                    Contents    = $"An error occurred when trying to get the stock info.",
                    Sender      = message.Contents.Sender,
                    Destination = $"chatroom://{chatRoomData.ChatRoomId}"
                });

                return(new ChatBotResult());
            }

            var parts        = response.Content.Split(Environment.NewLine)[1].Split(',');
            var stockName    = parts[0];
            var closingValue = parts[6];
            var contents     = $"{stockName} quote is ${closingValue} per share.";

            await _sendMessage.Run(new ChatMessage
            {
                Contents    = contents,
                Sender      = message.Contents.Sender,
                Destination = $"chatroom://{chatRoomData.ChatRoomId}"
            });

            return(new ChatBotResult());
        }
Exemplo n.º 2
0
        public async Task Send(NewMessageViewModel message)
        {
            var sender = _chatUsersRepository.FindByPrincipal(User);

            await _sendMessage.Run(new ChatMessage
            {
                Contents    = message.Contents,
                DateCreated = DateTime.Now,
                Destination = message.Destination,
                Sender      = sender
            });
        }