static async Task Main(string[] args)
        {
            string inputString;

            MyClient client = new MyClient();

            while (true)
            {
                inputString = Console.ReadLine();
                if (Regex.IsMatch(inputString, "^get *$", RegexOptions.IgnoreCase))
                {
                    await client.GetAllData(false);
                }
                else if (Regex.IsMatch(inputString, "^get --sorted *$", RegexOptions.IgnoreCase))
                {
                    await client.GetAllData(true);
                }
                else if (Regex.IsMatch(inputString, "^get --id .+ *$", RegexOptions.IgnoreCase))
                {
                    await client.GetDataByID(inputString.Substring(9));
                }
                else if (Regex.IsMatch(inputString, "^post {.+} *$", RegexOptions.IgnoreCase))
                {
                    await client.PostData(inputString.Substring(5));
                }
                else if (Regex.IsMatch(inputString, "^put \\S+ {.+} *$", RegexOptions.IgnoreCase))
                {
                    string[] commandArgs = inputString.Split(' ');
                    await client.PutData(commandArgs[1], inputString.Substring(4 + commandArgs[1].Length + 1)); // 4 is length of "put "
                }
                else if (Regex.IsMatch(inputString, "^delete \\S+ *$", RegexOptions.IgnoreCase))
                {
                    await client.DeleteData(inputString.Substring(7));
                }
                else if (Regex.IsMatch(inputString, "^exit *$", RegexOptions.IgnoreCase))
                {
                    return;
                }
                else
                {
                    Console.WriteLine("Invalid command");
                }
            }
        }