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();
            }
        }
        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);
        }
        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);
        }