Exemplo n.º 1
0
        private static OperationResult ExtractOperationResultFromResponse(HttpWebResponse httpWebResponse)
        {
            XDocument responseBody = httpWebResponse.GetResponseBody();
            /*
             *  <Operation xmlns="http://schemas.microsoft.com/windowsazure" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
             *      <ID>[GUID]</ID>
             *      <Status>InProgress|Succeeded|Failed</Status>
             *      <HttpStatusCode>200|etc</HttpStatusCode>
             *      <Code>code</Code>
             *      <Message>text</Message>
             *  </Operation>
             */
            OperationResult operationResult = new OperationResult();
            if (responseBody.Root == null)
            {
                throw new AzureExtensionsException("The response did not contain a root element.");
            }

            string idValue = GetChild(responseBody.Root, "ID").Value;
            operationResult.Id = Guid.Parse(idValue);
            string statusValue = GetChild(responseBody.Root, "Status").Value;
            operationResult.Status = (OperationStatus)Enum.Parse(typeof(OperationStatus), statusValue);
            if (operationResult.Status != OperationStatus.InProgress)
            {
                operationResult.HttpStatusCode = (HttpStatusCode)Enum.Parse(typeof(HttpStatusCode), GetChild(responseBody.Root, "HttpStatusCode").Value);
            }

            if (operationResult.Status == OperationStatus.Failed)
            {
                XElement error = GetChild(responseBody.Root, "Error");
                operationResult.Code = GetChild(error, "Code").Value;
                operationResult.Message = GetChild(error, "Message").Value;
            }

            return operationResult;
        }