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()); }
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 }); }