public async Task <StockResponse> GetStock(string stockCode, string url, string stockToken, HttpMethod httpMethod, bool sendMessage, IMessageController msgController, string userEmail) { StockResponse result = new StockResponse(); result.StockCode = stockCode; try { string stockUrl = url.Replace(stockToken, stockCode); var request = new HttpRequestMessage(httpMethod, stockUrl); var httpClient = new HttpClient(); var response = await httpClient.SendAsync(request); if (response.IsSuccessStatusCode) { var data = await response.Content.ReadAsStreamAsync(); ReadStock(data, ref result); } else { result.StockValue = string.Empty; result.Error = new Exception(string.Format("Error while trying to call {0} returned status code {1}", stockUrl, response.StatusCode)); } } catch (Exception ex) { result.StockValue = string.Empty; result.Error = ex; } if (sendMessage) { ChatMessage msg = new ChatMessage(); msg.UserEmail = "ChatBot"; msg.IsChatBotMessage = true; if (result.StockValue != string.Empty) { msg.MessageText = string.Format("{0} quote is ${1} per share", stockCode, result.StockValue); await msgController.SendMessage(msg); } else { msg.MessageText = string.Format("Sorry {0}, I could not retrieve the quote share for {1}", userEmail, stockCode); if (result.Error != null) { msg.MessageText += string.Format(", reason: {0}", result.Error.Message); } await msgController.SendErrorMessage(msg); } } return(result); }
/// <summary> /// Консольный ввод команд. /// Console comands input. /// </summary> private static void CommandsParser() { bool continueWorking = true; while (continueWorking) { var key = Console.ReadKey().Key; Console.WriteLine(); switch (key) { case ConsoleKey.E: Console.WriteLine($"Enter host name:"); var hostName = Console.ReadLine(); Console.WriteLine($"Enter port:"); int.TryParse(Console.ReadLine(), out int port); Console.WriteLine($"Enter virtual host (default '/'):"); var virtualHost = Console.ReadLine(); Console.WriteLine($"Enter user name:"); var userName = Console.ReadLine(); Console.WriteLine($"Enter password"); var password = Console.ReadLine(); DrawMenu(); messageController = new MessageController(hostName, port, virtualHost, userName, password); break; case ConsoleKey.S: Console.WriteLine($"Enter channel name:"); var channelToSend = Console.ReadLine(); Console.WriteLine($"Enter message:"); var message = Console.ReadLine(); messageController.SendMessage(new Message(message, channelToSend)); break; case ConsoleKey.L: Console.WriteLine($"Enter channel name to listen:"); var channelToListen = Console.ReadLine(); messageController.ReceiveMessages(channelToListen); break; case ConsoleKey.Q: continueWorking = false; break; case ConsoleKey.C: DrawMenu(); break; } } }