internal string GetUrlWithoutQuerys()
        {
            string url = Endpoint;

            bool hasBucket = !string.IsNullOrEmpty(BucketName);

            if (hasBucket)
            {
                if (PathStyle)
                {
                    url += "/" + BucketName;
                }
                else
                {
                    int    index  = url.IndexOf("//");
                    string prefix = url.Substring(0, index + 2);
                    string suffix = url.Substring(index + 2);

                    url = prefix + BucketName + "." + suffix;
                }
            }

            if (hasBucket && !string.IsNullOrEmpty(ObjectKey))
            {
                url += "/" + CommonUtil.UrlEncode(ObjectKey, Constants.DefaultEncoding, "/");
            }

            return(url);
        }
        public string GetUrl()
        {
            if (!string.IsNullOrEmpty(this._url))
            {
                return(this._url);
            }

            string url = Endpoint;

            bool hasBucket = !string.IsNullOrEmpty(BucketName);

            if (hasBucket)
            {
                if (PathStyle)
                {
                    url += "/" + BucketName;
                }
                else
                {
                    int    index  = url.IndexOf("//");
                    string prefix = url.Substring(0, index + 2);
                    string suffix = url.Substring(index + 2);

                    url = prefix + BucketName + "." + suffix;
                }
            }

            if (hasBucket && !string.IsNullOrEmpty(ObjectKey))
            {
                url += "/" + CommonUtil.UrlEncode(ObjectKey, Constants.DefaultEncoding, "/");
            }

            string paramString = CommonUtil.ConvertParamsToString(Params);

            if (!string.IsNullOrEmpty(paramString))
            {
                url += "?" + paramString;
            }

            this._url = url;

            return(this._url);
        }
        public static void RenameHeaders(HttpRequest request, string headerPrefix, string headerMetaPrefix)
        {
            IDictionary <String, String> headers = new Dictionary <String, String>(StringComparer.OrdinalIgnoreCase);

            foreach (KeyValuePair <string, string> header in request.Headers)
            {
                if (string.IsNullOrEmpty(header.Key))
                {
                    continue;
                }

                string key     = header.Key.Trim();
                string value   = header.Value == null ? "" : header.Value;
                bool   isValid = false;
                if (key.StartsWith(headerPrefix, StringComparison.OrdinalIgnoreCase) || key.StartsWith(Constants.ObsHeaderPrefix, StringComparison.OrdinalIgnoreCase) || Constants.AllowedRequestHttpHeaders.Contains(key.ToLower()))
                {
                    isValid = true;
                }
                else if (request.Method == HttpVerb.POST || request.Method == HttpVerb.PUT)
                {
                    key     = headerMetaPrefix + key;
                    isValid = true;
                }

                if (isValid)
                {
                    if (key.StartsWith(headerMetaPrefix, StringComparison.OrdinalIgnoreCase))
                    {
                        key = CommonUtil.UrlEncode(key, true);
                    }
                    headers.Add(key, CommonUtil.UrlEncode(value, true));
                }
            }

            request.Headers = headers;
        }