private static string RedirectURL(HttpResponseMessage response)
        {
            string str = response.Headers.GetValues("Location").FirstOrDefault <string>();

            Logger.Log(TraceLevel.Information, SdkUtil.GetI18nString(SdkMessage.REDIRECTED_URL_MSG) + " - " + str);
            return(str);
        }
 public static T GetResource <T>(string inputXml)
 {
     if (string.IsNullOrEmpty(inputXml))
     {
         throw new VCloudException(SdkUtil.GetI18nString(SdkMessage.NO_RESPONSE_RECEIVED_MSG));
     }
     return(SerializationUtil.DeserializeObject <T>(inputXml, "com.vmware.vcloud.api.rest.schema"));
 }
        public void HandleUnExpectedResponse()
        {
            string responseXml = this.ResponseXml;

            if (!string.IsNullOrEmpty(responseXml))
            {
                throw new VCloudException(SerializationUtil.DeserializeObject <ErrorType>(responseXml, "com.vmware.vcloud.api.rest.schema"));
            }
            throw new VCloudException(SdkUtil.GetI18nString(SdkMessage.NO_ERROR_MSG) + " - " + (object)this.ResponseStatusCode);
        }
 public Metadata GetMetadata()
 {
     try
     {
         Logger.Log(TraceLevel.Information, SdkUtil.GetI18nString(SdkMessage.GET_URL_MSG) + " - " + this.Reference.href + "/metadata");
         return(new Metadata(this.VcloudClient, SdkUtil.Get <MetadataType>(this.VcloudClient, this.Reference.href + "/metadata", 200)));
     }
     catch (Exception ex)
     {
         throw new VCloudException(ex.Message);
     }
 }
        public bool IsExpected(int expectedStatusCode)
        {
            Exception exception = new Exception();

            if (this.ResponseStatusCode == expectedStatusCode)
            {
                return(true);
            }
            Logger.Log(TraceLevel.Information, SdkUtil.GetI18nString(SdkMessage.EXPECTED_STATUS_CODE_MSG) + " - " + (object)expectedStatusCode);
            Logger.Log(TraceLevel.Information, SdkUtil.GetI18nString(SdkMessage.ACTUAL_STATUS_CODE_MSG) + " - " + (object)this.ResponseStatusCode);
            return(false);
        }
 protected static T GetResourceByReference(vCloudClient client, ReferenceType reference)
 {
     try
     {
         Logger.Log(TraceLevel.Information, SdkUtil.GetI18nString(SdkMessage.GET_URL_MSG) + " - " + reference.href);
         return(SdkUtil.Get <T>(client, reference.href, 200));
     }
     catch (Exception ex)
     {
         throw new VCloudException(ex.Message);
     }
 }
Exemple #7
0
 public RecordResult <T> GetNextPage()
 {
     try
     {
         if (this.HasNextPage())
         {
             return(this.VcloudClient.GetQueryService().ExecuteQuery <RecordResult <T>, QueryResultRecordsType, T>(this.GetNextPageReference().href));
         }
         throw new VCloudException(SdkUtil.GetI18nString(SdkMessage.REFERENCE_NOT_FOUND_MSG));
     }
     catch (Exception ex)
     {
         throw new VCloudException(ex.Message);
     }
 }
Exemple #8
0
 public ReferenceResult GetReferenceResult()
 {
     try
     {
         if (this.HasAlternateReferencesRefResult())
         {
             return(this.VcloudClient.GetQueryService().ExecuteQuery <ReferenceResult, ReferencesType, T>(this.GetAlternateReferencesRef().href));
         }
         throw new VCloudException(SdkUtil.GetI18nString(SdkMessage.REFERENCE_NOT_FOUND_MSG));
     }
     catch (Exception ex)
     {
         throw new VCloudException(ex.Message);
     }
 }
        public static Stream DownloadFile(vCloudClient client, string downloadURL)
        {
            HttpClient     httpClient     = client.HttpClient;
            Stream         inputStream    = (Stream)null;
            HttpStatusCode httpStatusCode = (HttpStatusCode)0;

            try
            {
                Logger.Log(TraceLevel.Information, SdkUtil.GetI18nString(SdkMessage.DOWNLOAD_URL_MSG) + " - " + downloadURL);
                if (!httpClient.DefaultRequestHeaders.Contains("Accept"))
                {
                    httpClient.DefaultRequestHeaders.Add("Accept", vCloudClient.SUPPORTED_SDK_VERSIONS[client.VcloudClientVersion]);
                }
                if (!httpClient.DefaultRequestHeaders.Contains(client.VcloudTokenHeader))
                {
                    httpClient.DefaultRequestHeaders.Add(client.VcloudTokenHeader, client.VcloudToken);
                }
                using (HttpResponseMessage result = httpClient.GetAsync(new System.Uri(downloadURL)).Result)
                {
                    if (result != null)
                    {
                        httpStatusCode = result.StatusCode;
                        inputStream    = (Stream) new MemoryStream(result.Content.ReadAsByteArrayAsync().Result);
                    }
                    Logger.Log(TraceLevel.Information, SdkUtil.GetI18nString(SdkMessage.STATUS_CODE_MSG) + " - " + (object)httpStatusCode);
                    Logger.Log(TraceLevel.Information, SdkUtil.GetI18nString(SdkMessage.STATUS_MSG) + " - " + result.StatusCode.ToString());
                }
            }
            catch (HttpRequestException ex)
            {
                Logger.Log(TraceLevel.Critical, ex.Message + " - " + downloadURL);
                throw new VCloudRuntimeException((Exception)ex);
            }
            catch (IOException ex)
            {
                Logger.Log(TraceLevel.Critical, ex.Message);
                throw new VCloudRuntimeException((Exception)ex);
            }
            if (httpStatusCode == HttpStatusCode.OK)
            {
                return(inputStream);
            }
            if (inputStream != null)
            {
                throw new VCloudException(SerializationUtil.DeserializeObject <ErrorType>(inputStream, "com.vmware.vcloud.api.rest.schema"));
            }
            throw new VCloudException(SdkUtil.GetI18nString(SdkMessage.DOWNLOAD_FAILED_MSG) + " - " + downloadURL);
        }
        public static Response Get(vCloudClient client, string url)
        {
            HttpClient httpClient = client.HttpClient;
            Response   response   = new Response();
            string     str        = (string)null;
            int        num        = 0;

            try
            {
                Logger.Log(TraceLevel.Information, SdkUtil.GetI18nString(SdkMessage.GET_URL_MSG) + " - " + url);
                if (!httpClient.DefaultRequestHeaders.Contains("Accept"))
                {
                    httpClient.DefaultRequestHeaders.Add("Accept", vCloudClient.SUPPORTED_SDK_VERSIONS[client.VcloudClientVersion]);
                }
                if (!httpClient.DefaultRequestHeaders.Contains(client.VcloudTokenHeader))
                {
                    httpClient.DefaultRequestHeaders.Add(client.VcloudTokenHeader, client.VcloudToken);
                }
                using (HttpResponseMessage result = httpClient.GetAsync(new System.Uri(url)).Result)
                {
                    if (result != null)
                    {
                        num = (int)result.StatusCode;
                        str = SerializationUtil.UTF8ByteArrayToString(result.Content.ReadAsByteArrayAsync().Result);
                    }
                    response.ResponseStatusCode = num;
                    Logger.Log(TraceLevel.Information, SdkUtil.GetI18nString(SdkMessage.STATUS_CODE_MSG) + " - " + (object)num);
                    Logger.Log(TraceLevel.Information, SdkUtil.GetI18nString(SdkMessage.STATUS_MSG) + " - " + result.StatusCode.ToString());
                    response.ResponseXml = str;
                    Logger.Log(TraceLevel.Information, SdkUtil.GetI18nString(SdkMessage.RESPONSE_MSG) + " - " + str);
                }
            }
            catch (HttpRequestException ex)
            {
                Logger.Log(TraceLevel.Critical, ex.Message + url);
                throw new VCloudRuntimeException((Exception)ex);
            }
            catch (IOException ex)
            {
                Logger.Log(TraceLevel.Critical, ex.Message);
                throw new VCloudRuntimeException((Exception)ex);
            }
            finally
            {
                httpClient.DefaultRequestHeaders.Clear();
            }
            return(response);
        }
        public static Response Delete(vCloudClient client, string url)
        {
            HttpClient httpClient = client.HttpClient;
            Response   response   = new Response();
            string     empty      = string.Empty;
            int        num        = 0;

            try
            {
                httpClient.DefaultRequestHeaders.Add("Accept", vCloudClient.SUPPORTED_SDK_VERSIONS[client.VcloudClientVersion]);
                httpClient.DefaultRequestHeaders.Add(client.VcloudTokenHeader, client.VcloudToken);
                Logger.Log(TraceLevel.Information, SdkUtil.GetI18nString(SdkMessage.DELETE_URL_MSG) + " - " + url);
                HttpRequestMessage  httpRequestMessage = new HttpRequestMessage(HttpMethod.Delete, url);
                HttpResponseMessage result;
                using (result = httpClient.DeleteAsync(new System.Uri(url)).Result)
                {
                    if (result != null)
                    {
                        num   = (int)result.StatusCode;
                        empty = SerializationUtil.UTF8ByteArrayToString(result.Content.ReadAsByteArrayAsync().Result);
                    }
                    response.ResponseStatusCode = num;
                    Logger.Log(TraceLevel.Information, SdkUtil.GetI18nString(SdkMessage.STATUS_CODE_MSG) + " - " + (object)num);
                    Logger.Log(TraceLevel.Information, SdkUtil.GetI18nString(SdkMessage.STATUS_MSG) + " - " + result.StatusCode.ToString());
                    response.ResponseXml = empty;
                    Logger.Log(TraceLevel.Information, SdkUtil.GetI18nString(SdkMessage.RESPONSE_MSG) + " - " + empty);
                }
            }
            catch (HttpRequestException ex)
            {
                Logger.Log(TraceLevel.Critical, ex.Message);
                throw new VCloudRuntimeException((Exception)ex);
            }
            catch (ApplicationException ex)
            {
                Logger.Log(TraceLevel.Critical, ex.Message);
                throw new VCloudRuntimeException((Exception)ex);
            }
            catch (IOException ex)
            {
                Logger.Log(TraceLevel.Critical, ex.Message);
                throw new VCloudRuntimeException((Exception)ex);
            }
            return(response);
        }
 protected static T GetEntityById(vCloudClient client, string vCloudId, string mediaType)
 {
     try
     {
         Logger.Log(TraceLevel.Information, SdkUtil.GetI18nString(SdkMessage.GET_URL_MSG) + " - " + client.VCloudApiURL + "/entity/" + vCloudId);
         foreach (LinkType linkType in SdkUtil.Get <EntityType>(client, client.VCloudApiURL + "/entity/" + vCloudId, 200).Link)
         {
             if (linkType.type.Equals(mediaType))
             {
                 return(SdkUtil.Get <T>(client, linkType.href, 200));
             }
         }
         throw new VCloudException(SdkUtil.GetI18nString(SdkMessage.REFERENCE_NOT_FOUND_MSG));
     }
     catch (Exception ex)
     {
         throw new VCloudException(ex.Message);
     }
 }
        internal static Response GetSupportedVersions(vCloudClient client, string url)
        {
            HttpClient httpClient = client.HttpClient;
            Response   response   = new Response();
            string     str        = (string)null;
            int        num        = 0;

            try
            {
                Logger.Log(TraceLevel.Information, SdkUtil.GetI18nString(SdkMessage.GET_SUPPORTED_VERSIONS_URL_MSG) + " - " + url);
                using (HttpResponseMessage result = httpClient.GetAsync(new System.Uri(url)).Result)
                {
                    if (result != null)
                    {
                        num = (int)result.StatusCode;
                        str = SerializationUtil.UTF8ByteArrayToString(result.Content.ReadAsByteArrayAsync().Result);
                    }
                    response.ResponseStatusCode = num;
                    Logger.Log(TraceLevel.Information, SdkUtil.GetI18nString(SdkMessage.STATUS_CODE_MSG) + " - " + (object)num);
                    Logger.Log(TraceLevel.Information, SdkUtil.GetI18nString(SdkMessage.STATUS_MSG) + " - " + result.StatusCode.ToString());
                    response.ResponseXml = str;
                    Logger.Log(TraceLevel.Information, SdkUtil.GetI18nString(SdkMessage.RESPONSE_MSG) + " - " + str);
                }
            }
            catch (HttpRequestException ex)
            {
                Logger.Log(TraceLevel.Critical, ex.Message + url);
                throw new VCloudRuntimeException((Exception)ex);
            }
            catch (IOException ex)
            {
                Logger.Log(TraceLevel.Critical, ex.Message);
                throw new VCloudRuntimeException((Exception)ex);
            }
            return(response);
        }
        public static Response Put(
            vCloudClient client,
            string url,
            string content,
            string contentType,
            string charset)
        {
            HttpClient httpClient = client.HttpClient;
            Response   response   = new Response();
            string     str        = (string)null;
            int        num        = 0;

            Logger.Log(TraceLevel.Information, SdkUtil.GetI18nString(SdkMessage.PUT_URL_MSG) + " - " + url);
            try
            {
                httpClient.DefaultRequestHeaders.Add("Accept", vCloudClient.SUPPORTED_SDK_VERSIONS[client.VcloudClientVersion]);
                httpClient.DefaultRequestHeaders.Add(client.VcloudTokenHeader, client.VcloudToken);
                HttpContent content1 = (HttpContent)null;
                if (content != null && content.Length > 0 && (contentType != null && contentType.Length > 0))
                {
                    Logger.Log(TraceLevel.Information, SdkUtil.GetI18nString(SdkMessage.PUT_REQUEST_BODY) + " - " + content);
                    Logger.Log(TraceLevel.Information, SdkUtil.GetI18nString(SdkMessage.PUT_CONTENT_TYPE) + " - " + contentType);
                    content1 = (HttpContent) new StringContent(content, Encoding.UTF8, contentType);
                }
                HttpRequestMessage  request = new HttpRequestMessage(HttpMethod.Put, url);
                HttpResponseMessage httpResponseMessage1;
                HttpResponseMessage httpResponseMessage2;
                if (content1 != null)
                {
                    httpResponseMessage2 = httpResponseMessage1 = httpClient.PutAsync(new System.Uri(url), content1).Result;
                }
                else
                {
                    httpResponseMessage1 = httpResponseMessage2 = httpClient.SendAsync(request).Result;
                }
                using (httpResponseMessage2)
                {
                    if (httpResponseMessage1 != null)
                    {
                        num = (int)httpResponseMessage1.StatusCode;
                        str = SerializationUtil.UTF8ByteArrayToString(httpResponseMessage1.Content.ReadAsByteArrayAsync().Result);
                    }
                    response.ResponseStatusCode = num;
                    Logger.Log(TraceLevel.Information, SdkUtil.GetI18nString(SdkMessage.STATUS_CODE_MSG) + " - " + (object)num);
                    Logger.Log(TraceLevel.Information, SdkUtil.GetI18nString(SdkMessage.STATUS_MSG) + " - " + httpResponseMessage1.StatusCode.ToString());
                    response.ResponseXml = str;
                    Logger.Log(TraceLevel.Information, SdkUtil.GetI18nString(SdkMessage.RESPONSE_MSG) + " - " + str);
                }
            }
            catch (HttpRequestException ex)
            {
                Logger.Log(TraceLevel.Critical, ex.Message);
                throw new VCloudRuntimeException((Exception)ex);
            }
            catch (ApplicationException ex)
            {
                Logger.Log(TraceLevel.Critical, ex.Message);
                throw new VCloudRuntimeException((Exception)ex);
            }
            catch (IOException ex)
            {
                Logger.Log(TraceLevel.Critical, ex.Message);
                throw new VCloudRuntimeException((Exception)ex);
            }
            finally
            {
                httpClient.DefaultRequestHeaders.Clear();
            }
            return(response);
        }
        private static void UploadFile(
            vCloudClient client,
            string fileName,
            string fileURL,
            Stream inputStreams,
            long size,
            long startByte,
            long endByte)
        {
            HttpClient httpClient = client.HttpClient;

            Logger.Log(TraceLevel.Information, SdkUtil.GetI18nString(SdkMessage.UPLOAD_FILE_SIZE_MSG) + " - " + fileName + "\t Total Size " + (object)size);
            try
            {
                long        num         = size;
                HttpContent httpContent = (HttpContent) new StreamContent(inputStreams);
                if (endByte > startByte)
                {
                    num = endByte - startByte + 1L;
                    Logger.Log(TraceLevel.Information, SdkUtil.GetI18nString(SdkMessage.UPLOAD_FILE_SIZE_MSG) + " - " + fileName + "\t" + (object)size + "\t Upload \t" + (object)startByte + " to \t" + (object)endByte);
                    ContentRangeHeaderValue rangeHeaderValue = new ContentRangeHeaderValue(startByte, endByte, size);
                    httpContent.Headers.ContentRange = rangeHeaderValue;
                }
                httpContent.Headers.ContentLength = new long?(num);
                if (!httpClient.DefaultRequestHeaders.Contains(client.VcloudTokenHeader))
                {
                    httpClient.DefaultRequestHeaders.Add(client.VcloudTokenHeader, client.VcloudToken);
                }
                HttpContent content = (HttpContent) new StreamContent(inputStreams);
                using (HttpResponseMessage result = httpClient.PutAsync(new System.Uri(fileURL), content).Result)
                {
                    if (result == null)
                    {
                        return;
                    }
                    string message = SerializationUtil.UTF8ByteArrayToString(result.Content.ReadAsByteArrayAsync().Result);
                    if (result.StatusCode == HttpStatusCode.OK)
                    {
                        Logger.Log(TraceLevel.Information, SdkUtil.GetI18nString(SdkMessage.UPLOAD_COMPLETE_MSG) + " - " + fileName);
                    }
                    else
                    {
                        Logger.Log(TraceLevel.Critical, SdkUtil.GetI18nString(SdkMessage.UPLOAD_FAILED_MSG) + " - " + fileURL);
                        Logger.Log(TraceLevel.Information, SdkUtil.GetI18nString(SdkMessage.STATUS_MSG) + " - " + result.StatusCode.ToString());
                        Logger.Log(TraceLevel.Information, message);
                        Logger.Log(TraceLevel.Critical, SdkUtil.GetI18nString(SdkMessage.FILE_UPLOAD_FAILED_MSG) + " - " + fileURL);
                    }
                }
            }
            catch (HttpRequestException ex)
            {
                Logger.Log(TraceLevel.Critical, SdkUtil.GetI18nString(SdkMessage.HTTP_EXCEPTION__UPLOADING_MSG) + " - " + fileURL);
                throw new VCloudRuntimeException((Exception)ex);
            }
            catch (IOException ex)
            {
                Logger.Log(TraceLevel.Critical, SdkUtil.GetI18nString(SdkMessage.IO_EXCEPTION_UPLOADING_MSG) + " - " + fileURL);
                throw new VCloudRuntimeException((Exception)ex);
            }
            finally
            {
                inputStreams.Dispose();
                httpClient.DefaultRequestHeaders.Clear();
            }
        }
        internal static Response Login(
            vCloudClient client,
            string url,
            HttpRequestHeaders authHeader)
        {
            HttpClient httpClient = client.HttpClient;
            Response   response   = new Response();
            string     str        = (string)null;
            int        num        = 0;

            Logger.Log(TraceLevel.Information, SdkUtil.GetI18nString(SdkMessage.LOGIN_URL_MSG) + " - " + url);
            try
            {
                httpClient.DefaultRequestHeaders.Add("Accept", vCloudClient.SUPPORTED_SDK_VERSIONS[client.VcloudClientVersion]);
                HttpRequestMessage  request1 = new HttpRequestMessage(HttpMethod.Post, url);
                HttpResponseMessage result;
                using (result = httpClient.SendAsync(request1).Result)
                {
                    if (result != null)
                    {
                        if (result.StatusCode == HttpStatusCode.MovedPermanently)
                        {
                            if (!httpClient.DefaultRequestHeaders.Contains("Accept"))
                            {
                                httpClient.DefaultRequestHeaders.Add("Accept", vCloudClient.SUPPORTED_SDK_VERSIONS[client.VcloudClientVersion]);
                            }
                            System.Uri         uri      = new System.Uri(RestUtil.RedirectURL(result));
                            HttpRequestMessage request2 = (HttpRequestMessage)null;
                            request2.RequestUri.MakeRelativeUri(uri);
                            result = httpClient.SendAsync(request2).Result;
                        }
                        if (result.Headers.GetValues("x-vcloud-authorization") != null)
                        {
                            client.VcloudTokenHeader = "x-vcloud-authorization";
                            client.VcloudToken       = result.Headers.GetValues("x-vcloud-authorization").FirstOrDefault <string>();
                        }
                        num = (int)result.StatusCode;
                        str = SerializationUtil.UTF8ByteArrayToString(result.Content.ReadAsByteArrayAsync().Result);
                    }
                    response.ResponseStatusCode = num;
                    Logger.Log(TraceLevel.Information, SdkUtil.GetI18nString(SdkMessage.STATUS_CODE_MSG) + " - " + (object)num);
                    Logger.Log(TraceLevel.Information, SdkUtil.GetI18nString(SdkMessage.STATUS_MSG) + " - " + result.StatusCode.ToString());
                    response.ResponseXml = str;
                    Logger.Log(TraceLevel.Information, SdkUtil.GetI18nString(SdkMessage.RESPONSE_MSG) + " - " + str);
                }
            }
            catch (HttpRequestException ex)
            {
                Logger.Log(TraceLevel.Critical, ex.Message);
                throw new VCloudRuntimeException((Exception)ex);
            }
            catch (NotSupportedException ex)
            {
                Logger.Log(TraceLevel.Critical, ex.Message);
                throw new VCloudRuntimeException((Exception)ex);
            }
            catch (IOException ex)
            {
                Logger.Log(TraceLevel.Critical, ex.Message);
                throw new VCloudRuntimeException((Exception)ex);
            }
            catch (Exception ex)
            {
                Logger.Log(TraceLevel.Critical, ex.Message);
                throw new VCloudRuntimeException(ex);
            }
            finally
            {
                httpClient.DefaultRequestHeaders.Clear();
            }
            return(response);
        }