コード例 #1
0
        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);
        }
コード例 #2
0
        /// <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;
                }
            }
        }