DeployToAzure.Management.AzureManagementLowLevelApi.CheckRequestStatus C# (CSharp) Method

CheckRequestStatus() public method

public CheckRequestStatus ( RequestUri requestUri ) : AzureRequestStatus
requestUri RequestUri
return AzureRequestStatus
        public AzureRequestStatus CheckRequestStatus(RequestUri requestUri)
        {
            var response = _http.Get(requestUri.ToString());
            var match = Regex.Match(response.Content, "<Status>(.*?)</Status>");
            FailFast.Unless(match.Success, "Expected regex match in response content: " + match + ".  Request URI:" + requestUri + ", Response content:" + response.Content);

            switch (match.Groups[1].Value)
            {
                case "InProgress":
                    return AzureRequestStatus.InProgress;
                case "Succeeded":
                    return AzureRequestStatus.Succeeded;
                case "Failed":
                    OurTrace.TraceError("CheckRequestStatus gave us a failure: " + response.Content);
                    var is400BadRequest = Regex.Match(response.Content, "<HttpStatusCode>400</HttpStatusCode><Error><Code>BadRequest</Code>");
                    if (is400BadRequest.Success)
                        throw new BadRequestException(requestUri, response.Content);
                    return AzureRequestStatus.Failed;
                default:
                    FailFast.WithMessage("Unexpected operation status: " + match.Groups[1].Value + ", for operation: " + requestUri);
                    // ReSharper disable HeuristicUnreachableCode
                    throw new InvalidOperationException("Shouldn't ever get here!");
                    // ReSharper restore HeuristicUnreachableCode
            }
        }

Usage Example

        public void CheckRequestStatus_Succeeded()
        {
            var http = new ScriptedHttpFake();
            http.Script.Add(() => http.NextResponse = new HttpResponse(HttpStatusCode.Accepted, "<Status>Succeeded</Status>"));
            var api = new AzureManagementLowLevelApi(http);

            var requestStatus = api.CheckRequestStatus(TestUrl);

            Assert.That(requestStatus, Is.EqualTo(AzureRequestStatus.Succeeded), "request status");
            Assert.That(http.LastGetUri, Is.EqualTo("https://management.core.windows.net/subId/operations/requestId"), "operation URI");
        }