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
}
}