private static async Task GetInput() { Action work = () => { do { var key = Console.ReadKey(true); if (key.Key == ConsoleKey.X) { RokuConfig.SetDone(); } else if (!RokuConfig.IsValidKey(key.Key)) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine($"invalid key: {key.Key}"); Console.ResetColor(); } else { Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine($"valid key: {key.Key}"); Console.ResetColor(); SendRokuCommand(key.Key); } } while (!RokuConfig.IsDone); }; await Task.Run(work); }
static async Task Main(string[] args) { Console.Title = "Roku Control Console"; Console.Write("Enter your Roku device's IP address: "); string input = Console.ReadLine(); // TODO: validate IP address if (!string.IsNullOrWhiteSpace(input)) { RokuConfig.SetUrl(input); var info = await RokuClient.GetRokuInformation(new Uri(RokuConfig.baseUrl + "query/device-info")); Console.WriteLine(info); Console.WriteLine("Enter your input (x to quit)"); await GetInput(); } }