public static bool WaitForComplete()

in src/common/details/helpers/http_helpers.cs [194:255]


        public static bool WaitForComplete(Func<HttpWebRequest> createWebRequest, INamedValues values, string domain, string message, bool? quiet = null, bool? verbose = null)
        {
            quiet ??= values.GetOrDefault("x.quiet", false);
            verbose ??= values.GetOrDefault("x.verbose", true);

            var waitTimeout = values.GetOrDefault($"{domain}.wait.timeout", 0);
            if (waitTimeout <= 0) return false;

            if (!quiet.Value) Console.Write(message);

            var passed = false;
            var keepTrying = true;
            var started = DateTime.Now;
            var finalJson = "";
            while (keepTrying)
            {
                var request = createWebRequest();
                var response = HttpHelpers.GetWebResponse(request);

                var json = HttpHelpers.ReadWriteJson(response, values, domain);
                var parsed = json != null ? JsonDocument.Parse(json) : null;

                var status = parsed?.GetPropertyStringOrNull("status");
                switch (status)
                {
                    case "success":
                    case "Success":
                    case "Succeeded":
                    case "succeeded":
                        message = $"\n{message} Done!\n";
                        keepTrying = false;
                        finalJson = json;
                        passed = true;
                        continue;

                    case "failed":
                    case "Failed":
                        message = $"\n{message} Failed!\n";
                        keepTrying = false;
                        finalJson = json;
                        continue;
                }

                if (DateTime.Now.Subtract(started).TotalMilliseconds > waitTimeout)
                {
                    message = $"\n{message} Timed-out!\n";
                    keepTrying = false;
                    finalJson = json;
                    continue;
                }

                Thread.Sleep(500);
                if (!quiet.Value) Console.Write(".");
                if (!quiet.Value && verbose.Value) Console.Write(status);
            }

            if (!quiet.Value) Console.WriteLine(message);
            if (!quiet.Value && verbose.Value) JsonHelpers.PrintJson(finalJson);

            values.Reset("passed", passed ? "true" : "false");
            return passed;
        }