private static void DoBucketCorsOperations()
        {
            CreateTemporarySignatureRequest request = new CreateTemporarySignatureRequest();

            request.BucketName  = bucketName;
            request.Method      = HttpVerb.PUT;
            request.Expires     = 3600;
            request.SubResource = SubResourceEnum.Cors;
            request.Headers.Add("Content-Type", "application/xml");
            String requestXml = "<CORSConfiguration><CORSRule><AllowedMethod>GET</AllowedMethod><AllowedOrigin>*</AllowedOrigin><AllowedHeader>*</AllowedHeader></CORSRule></CORSConfiguration>";

            request.Headers.Add("Content-MD5", Convert.ToBase64String(new MD5CryptoServiceProvider().ComputeHash(Encoding.UTF8.GetBytes(requestXml))));

            CreateTemporarySignatureResponse response = client.CreateTemporarySignature(request);

            Console.WriteLine("Setting bucket CORS using temporary signature url:");
            Console.WriteLine("\t" + response.SignUrl);
            GetResponse(request.Method, response, requestXml);

            request             = new CreateTemporarySignatureRequest();
            request.BucketName  = bucketName;
            request.Method      = HttpVerb.GET;
            request.Expires     = 3600;
            request.SubResource = SubResourceEnum.Cors;
            response            = client.CreateTemporarySignature(request);
            Console.WriteLine("Getting bucket CORS using temporary signature url:");
            Console.WriteLine("\t" + response.SignUrl);
            GetResponse(request.Method, response);
        }
        private static void DoObjectAclOperations()
        {
            CreateTemporarySignatureRequest request = new CreateTemporarySignatureRequest();

            request.BucketName  = bucketName;
            request.ObjectKey   = objectKey;
            request.Method      = HttpVerb.PUT;
            request.Expires     = 3600;
            request.SubResource = SubResourceEnum.Acl;
            request.Headers.Add("x-obs-acl", "public-read");
            CreateTemporarySignatureResponse response = client.CreateTemporarySignature(request);

            Console.WriteLine("Setting object ACL to public-read using temporary signature url:");
            Console.WriteLine("\t" + response.SignUrl);
            GetResponse(request.Method, response);



            request             = new CreateTemporarySignatureRequest();
            request.BucketName  = bucketName;
            request.ObjectKey   = objectKey;
            request.Method      = HttpVerb.GET;
            request.Expires     = 3600;
            request.SubResource = SubResourceEnum.Acl;
            response            = client.CreateTemporarySignature(request);
            Console.WriteLine("Getting object ACL using temporary signature url:");
            Console.WriteLine("\t" + response.SignUrl);
            GetResponse(request.Method, response);
        }
        private static void DoDeleteBucket()
        {
            CreateTemporarySignatureRequest request = new CreateTemporarySignatureRequest();

            request.BucketName = bucketName;
            request.Method     = HttpVerb.DELETE;
            request.Expires    = 3600;
            CreateTemporarySignatureResponse response = client.CreateTemporarySignature(request);

            Console.WriteLine("Deleting bucket using temporary signature url:");
            Console.WriteLine("\t" + response.SignUrl);
            GetResponse(request.Method, response);
        }
        private static void DoGetObject()
        {
            CreateTemporarySignatureRequest request = new CreateTemporarySignatureRequest();

            request.BucketName = bucketName;
            request.ObjectKey  = objectKey;
            request.Method     = HttpVerb.GET;
            request.Expires    = 3600;
            CreateTemporarySignatureResponse response = client.CreateTemporarySignature(request);

            Console.WriteLine("Getting object using temporary signature url:");
            Console.WriteLine("\t" + response.SignUrl);
            GetResponse(request.Method, response);
        }
        private static void DoCreateObject()
        {
            CreateTemporarySignatureRequest request = new CreateTemporarySignatureRequest();

            request.BucketName = bucketName;
            request.ObjectKey  = objectKey;
            request.Method     = HttpVerb.PUT;
            request.Expires    = 3600;
            request.Headers.Add("Content-Type", "text/plain");
            CreateTemporarySignatureResponse response = client.CreateTemporarySignature(request);

            Console.WriteLine("Createing object using temporary signature url:");
            Console.WriteLine("\t" + response.SignUrl);
            GetResponse(request.Method, response, "Hello OBS");
        }
        private static void DoCreateBucket()
        {
            CreateTemporarySignatureRequest request = new CreateTemporarySignatureRequest();

            request.BucketName = bucketName;
            request.Method     = HttpVerb.PUT;
            request.Expires    = 3600;
            CreateTemporarySignatureResponse response = client.CreateTemporarySignature(request);

            Console.WriteLine("Creating bucket using temporary signature url:");
            Console.WriteLine("\t" + response.SignUrl);
            string location   = "your location";
            String requestXml = "<CreateBucketConfiguration><Location>" + location + "</Location></CreateBucketConfiguration>";

            GetResponse(request.Method, response);
        }
Beispiel #7
0
        /// <summary>
        /// Generate parameters for a temporary authentication request.
        /// </summary>
        /// <param name="request">Request parameters</param>
        /// <returns>Response</returns>
        public CreateTemporarySignatureResponse CreateTemporarySignature(CreateTemporarySignatureRequest request)
        {
            HttpRequest httpRequest = new HttpRequest();

            httpRequest.PathStyle  = this.ObsConfig.PathStyle;
            httpRequest.BucketName = request.BucketName;
            httpRequest.ObjectKey  = request.ObjectKey;
            httpRequest.Method     = request.Method;

            IHeaders iheaders = this.httpClient.GetIHeaders(new HttpContext(this.sp, this.ObsConfig));

            if (!string.IsNullOrEmpty(this.sp.Token) && !request.Parameters.ContainsKey(iheaders.SecurityTokenHeader()))
            {
                request.Parameters.Add(iheaders.SecurityTokenHeader(), this.sp.Token.Trim());
            }

            foreach (KeyValuePair <string, string> entry in request.Headers)
            {
                CommonUtil.AddHeader(httpRequest, entry.Key, entry.Value);
            }

            foreach (KeyValuePair <string, string> entry in request.Parameters)
            {
                CommonUtil.AddParam(httpRequest, entry.Key, entry.Value);
            }

            if (request.SubResource.HasValue)
            {
                SubResourceEnum value = request.SubResource.Value;
                if (value == SubResourceEnum.StoragePolicy && this.ObsConfig.AuthType == AuthTypeEnum.OBS)
                {
                    value = SubResourceEnum.StorageClass;
                }
                else if (value == SubResourceEnum.StorageClass && this.ObsConfig.AuthType != AuthTypeEnum.OBS)
                {
                    value = SubResourceEnum.StoragePolicy;
                }

                CommonUtil.AddParam(httpRequest, EnumAdaptor.GetStringValue(value), null);
            }

            foreach (KeyValuePair <string, string> entry in request.Metadata.KeyValuePairs)
            {
                if (string.IsNullOrEmpty(entry.Key))
                {
                    continue;
                }
                string _key = entry.Key;
                if (!entry.Key.StartsWith(iheaders.HeaderMetaPrefix(), StringComparison.OrdinalIgnoreCase) && !entry.Key.StartsWith(Constants.ObsHeaderMetaPrefix, StringComparison.OrdinalIgnoreCase))
                {
                    _key = iheaders.HeaderMetaPrefix() + _key;
                }
                CommonUtil.AddHeader(httpRequest, _key, entry.Value);
            }

            long expires = 300;

            if (request.Expires.HasValue && request.Expires.Value > 0)
            {
                expires = request.Expires.Value;
            }

            return(this.ObsConfig.AuthType == AuthTypeEnum.V4 ? this.CreateV4TemporarySignature(httpRequest, expires, iheaders) : this.CreateTemporarySignature(httpRequest, expires, iheaders));
        }