Ejemplo n.º 1
0
 /// <summary>
 /// Changes an object's ACL
 /// </summary>
 public ACLChangeResponse ACLChange(ACLChangeRequest request)
 {
     return(Invoke <ACLChangeResponse>(request));
 }
Ejemplo n.º 2
0
        public static void Main(string [] args)
        {
            bool              done = false;
            string            result, cfDate, cfVersion = "2010-08-01", cfContent, cfKey1 = "AKIAJARKKNFC2QKIOQFA", cfKey2 = "qMlOAQioqwN0ho0XyDOYfl/V1GXEivZHYPyo//Qu", cfSign;
            ThreeSharpWrapper s3       = new ThreeSharpWrapper(cfKey1, cfKey2);
            SecureString      cfSecret = new SecureString();

            s3.config.IsSecure = false;
            Console.Write("Upload " + args [0] + "? Y/N");
            if ("y".Equals(Console.ReadLine(), StringComparison.InvariantCultureIgnoreCase))
            {
                while (!done)
                {
                    try {
                        Console.Write("Uploading...");
                        s3.AddFileObject("roxority", args [0] + ".zip", @"c:\s3sync\" + args [0] + ".zip");
                        Console.WriteLine("Done.");
                        done = true;
                    } catch (Exception ex) {
                        Console.WriteLine("\r\n" + ex.Message + " ---retrying.");
                        done = false;
                    }
                }
            }
            done = false;
            while (!done)
            {
                try {
                    Console.Write("Setting permissions...");
                    using (ACLChangeRequest request = new ACLChangeRequest("roxority", args [0] + ".zip?acl", "public-read"))
                        s3.service.ACLChange(request).Dispose();
                    Console.WriteLine("Done.");
                    done = true;
                } catch (Exception ex) {
                    Console.WriteLine("\r\n" + ex.Message + " ---retrying.");
                    done = false;
                }
            }
            done      = false;
            cfDate    = AmazonCloudFrontUtil.FormattedCurrentTimestamp;
            cfContent = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><InvalidationBatch xmlns=\"http://cloudfront.amazonaws.com/doc/" + cfVersion + "/\"><Path>/" + args [0] + ".zip</Path><CallerReference>" + DateTime.Now.Ticks + "</CallerReference></InvalidationBatch>";
            foreach (char c in cfKey2)
            {
                cfSecret.AppendChar(c);
            }
            using (AmazonCloudFrontClient cfc = new Amazon.CloudFront.AmazonCloudFrontClient(cfKey1, cfSecret, new AmazonCloudFrontConfig()))
                using (WebClient wc = new WebClient())
                    while (!done)
                    {
                        try {
                            Console.Write("CloudFront invalidation...");
                            wc.Headers ["x-amz-date"] = cfDate;
                            wc.Headers [HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded; charset=utf-8";
                            using (HMACSHA1 sha1 = new HMACSHA1())
                                cfSign = AWSSDKUtils.HMACSign(cfDate, cfSecret, sha1);
                            wc.Headers [HttpRequestHeader.Authorization] = "AWS " + cfKey1 + ":" + cfSign;
                            if (string.IsNullOrEmpty(result = wc.UploadString("https://cloudfront.amazonaws.com/" + cfVersion + "/distribution/E14JHINLXE5EL1/invalidation", cfContent)) || !result.Contains("<Status>InProgress</Status>"))
                            {
                                throw new Exception("\r\n" + result + "\r\n");
                            }
                            Console.WriteLine("Done.");
                            done = true;
                        } catch (Exception ex) {
                            Console.WriteLine("\r\n" + ex.Message + " ---retrying.");
                            done = false;
                        }
                    }
            Console.Beep();
            Console.WriteLine("DONE");
            Console.ReadLine();
        }
Ejemplo n.º 3
0
        static void DemonstrateThreeSharp()
        {
            Console.WriteLine("===========================================");
            Console.WriteLine("Demonstrating the ThreeSharp Library");
            Console.WriteLine("===========================================");

            ThreeSharpConfig config = new ThreeSharpConfig();

            config.AwsAccessKeyID     = awsAccessKeyId;
            config.AwsSecretAccessKey = awsSecretAccessKey;
            config.IsSecure           = false;

            IThreeSharp service = new ThreeSharpQuery(config);

            // Convert the bucket name to lowercase for vanity domains.
            // the bucket must be lower case since DNS is case-insensitive.
            Random r = new Random();
            string testBucketName  = awsAccessKeyId.ToLower() + "-test-bucket" + r.Next(50000).ToString();;
            string testBucketName2 = awsAccessKeyId.ToLower() + "-test-bucket" + r.Next(50000).ToString();;
            string stringKeyName   = "StringObject";


            Console.WriteLine("\n----- Creating Bucket " + testBucketName + " -----");
            using (BucketAddRequest request = new BucketAddRequest(testBucketName))
                using (BucketAddResponse response = service.BucketAdd(request))
                { }
            Console.WriteLine("\npress enter >");
            Console.ReadLine();

            Console.WriteLine("\n----- Listing Bucket " + testBucketName + " -----");
            using (BucketListRequest request = new BucketListRequest(testBucketName))
                using (BucketListResponse response = service.BucketList(request))
                {
                    Console.WriteLine(response.StreamResponseToString());
                }
            Console.WriteLine("\npress enter >");
            Console.ReadLine();

            Console.WriteLine("\n----- Creating Bucket " + testBucketName2 + " -----");
            using (BucketAddRequest request = new BucketAddRequest(testBucketName2))
                using (BucketAddResponse response = service.BucketAdd(request))
                { }
            Console.WriteLine("\npress enter >");
            Console.ReadLine();

            Console.WriteLine("\n----- Listing Bucket " + testBucketName2 + " -----");
            using (BucketListRequest request = new BucketListRequest(testBucketName2))
                using (BucketListResponse response = service.BucketList(request))
                {
                    Console.WriteLine(response.StreamResponseToString());
                }
            Console.WriteLine("\npress enter >");
            Console.ReadLine();

            Console.WriteLine("\n----- Adding String Object to " + testBucketName + " -----");
            using (ObjectAddRequest request = new ObjectAddRequest(testBucketName, stringKeyName))
            {
                request.LoadStreamWithString("This is a string object.");
                using (ObjectAddResponse response = service.ObjectAdd(request))
                { }
            }
            Console.WriteLine("\npress enter >");
            Console.ReadLine();

            Console.WriteLine("\n----- Getting String Object -----");
            using (ObjectGetRequest request = new ObjectGetRequest(testBucketName, stringKeyName))
            {
                using (ObjectGetResponse response = service.ObjectGet(request))
                {
                    Console.WriteLine(response.StreamResponseToString());
                }
            }
            Console.WriteLine("\npress enter >");
            Console.ReadLine();

            Console.WriteLine("\n----- Copying String Object to " + testBucketName2 + " -----");
            using (ObjectCopyRequest request = new ObjectCopyRequest(testBucketName, stringKeyName, testBucketName2, stringKeyName + "Copy"))
                using (ObjectCopyResponse response = service.ObjectCopy(request))
                { }
            Console.WriteLine("\npress enter >");
            Console.ReadLine();

            Console.WriteLine("\n----- Listing Bucket " + testBucketName2 + " -----");
            using (BucketListRequest request = new BucketListRequest(testBucketName2))
                using (BucketListResponse response = service.BucketList(request))
                {
                    Console.WriteLine(response.StreamResponseToString());
                }
            Console.WriteLine("\npress enter >");
            Console.ReadLine();

            Console.WriteLine("\n----- Getting RequestPaymentConfiguration for " + testBucketName2 + " -----");
            using (PaymentGetRequest request = new PaymentGetRequest(testBucketName2))
                using (PaymentGetResponse response = service.PaymentGet(request))
                {
                    Console.WriteLine(response.StreamResponseToString());
                }
            Console.WriteLine("\npress enter >");
            Console.ReadLine();

            Console.WriteLine("\n----- Changing RequestPaymentConfiguration for " + testBucketName2 + " -----");
            using (PaymentChangeRequest request = new PaymentChangeRequest(testBucketName2, PaymentChangeRequest.Payer.Requester))
                using (PaymentChangeResponse response = service.PaymentChange(request))
                { }

            Console.WriteLine("\n----- Getting RequestPaymentConfiguration (again) for " + testBucketName2 + " -----");
            using (PaymentGetRequest request = new PaymentGetRequest(testBucketName2))
                using (PaymentGetResponse response = service.PaymentGet(request))
                {
                    Console.WriteLine(response.StreamResponseToString());
                }
            Console.WriteLine("\npress enter >");
            Console.ReadLine();

            Console.WriteLine("\n----- Changing RequestPaymentConfiguration for " + testBucketName2 + " -----");
            using (PaymentChangeRequest request = new PaymentChangeRequest(testBucketName2, PaymentChangeRequest.Payer.BucketOwner))
                using (PaymentChangeResponse response = service.PaymentChange(request))
                { }

            Console.WriteLine("\n----- Getting Copied String Object -----");
            using (ObjectGetRequest request = new ObjectGetRequest(testBucketName2, stringKeyName + "Copy"))
            {
                using (ObjectGetResponse response = service.ObjectGet(request))
                {
                    Console.WriteLine(response.StreamResponseToString());
                }
            }
            Console.WriteLine("\npress enter >");
            Console.ReadLine();


            Console.WriteLine("\n----- Streaming File Object -----");
            using (ObjectAddRequest request = new ObjectAddRequest(testBucketName, uploadFile))
            {
                request.LoadStreamWithFile(uploadPath + uploadFile);
                using (ObjectAddResponse response = service.ObjectAdd(request))
                { }
            }
            Console.WriteLine("\npress enter >");
            Console.ReadLine();

            Console.WriteLine("\n----- Streaming/Encrypting File Object -----");
            using (ObjectAddRequest request = new ObjectAddRequest(testBucketName, uploadFile + "Encrypted"))
            {
                request.LoadStreamWithFile(uploadPath + uploadFile);
                request.EncryptStream(encryptionKey, encryptionIV);
                using (ObjectAddResponse response = service.ObjectAdd(request))
                { }
            }
            Console.WriteLine("\npress enter >");
            Console.ReadLine();

            Console.WriteLine("\n----- Listing Bucket " + testBucketName + " -----");
            using (BucketListRequest request = new BucketListRequest(testBucketName))
                using (BucketListResponse response = service.BucketList(request))
                {
                    Console.WriteLine(response.StreamResponseToString());
                }
            Console.WriteLine("\npress enter >");
            Console.ReadLine();

            Console.WriteLine("\n----- Streaming File to Disk -----");
            using (ObjectGetRequest request = new ObjectGetRequest(testBucketName, uploadFile))
                using (ObjectGetResponse response = service.ObjectGet(request))
                {
                    response.StreamResponseToFile(downloadPath + uploadFile);
                }
            Console.WriteLine("\npress enter >");
            Console.ReadLine();

            Console.WriteLine("\n----- Streaming/Decrypting File to Disk -----");
            using (ObjectGetRequest request = new ObjectGetRequest(testBucketName, uploadFile + "Encrypted"))
                using (ObjectGetResponse response = service.ObjectGet(request))
                {
                    response.DecryptStream(encryptionKey, encryptionIV);
                    response.StreamResponseToFile(downloadPath + "decrypted-" + uploadFile);
                }
            Console.WriteLine("\npress enter >");
            Console.ReadLine();

            Console.WriteLine("\n----- Query String Authorization Example -----");
            using (UrlGetRequest request = new UrlGetRequest(testBucketName, uploadFile))
            {
                request.ExpiresIn = 60 * 1000;
                using (UrlGetResponse response = service.UrlGet(request))
                {
                    Console.WriteLine("Try this url in your web browser (it will only work for 60 seconds)\n");
                    Console.WriteLine(response.StreamResponseToString());
                }
            }
            Console.WriteLine("\npress enter >");
            Console.ReadLine();

            Console.WriteLine("\n----- Adding String Object with Metadata and Public Read ACL -----");
            using (ObjectAddRequest request = new ObjectAddRequest(testBucketName, stringKeyName + "Public"))
            {
                request.LoadStreamWithString("This is a publicly readable test.");
                request.MetaData.Add("blah", "foo");
                request.Headers.Add("x-amz-acl", "private");
                //request.Headers.Add("x-amz-acl", "public-read");
                //request.Headers.Add("x-amz-acl", "public-read-write");
                //request.Headers.Add("x-amz-acl", "authenticated-read");
                using (ObjectAddResponse response = service.ObjectAdd(request))
                { }
            }
            Console.WriteLine("\npress enter >");
            Console.ReadLine();

            Console.WriteLine("\n----- Getting Object's ACL -----");
            using (ACLGetRequest request = new ACLGetRequest(testBucketName, stringKeyName + "Public"))
                using (ACLGetResponse response = service.ACLGet(request))
                {
                    string output = response.StreamResponseToString();
                    Console.WriteLine(output);
                }
            Console.WriteLine("\npress enter >");
            Console.ReadLine();

            Console.WriteLine("\n----- Changing Object's ACL -----");
            using (ACLChangeRequest request = new ACLChangeRequest(testBucketName, stringKeyName + "Public", "public-read"))
                using (ACLChangeResponse response = service.ACLChange(request))
                { }
            Console.WriteLine("\npress enter >");
            Console.ReadLine();

            Console.WriteLine("\n----- Getting Object's ACL -----");
            using (ACLGetRequest request = new ACLGetRequest(testBucketName, stringKeyName + "Public"))
                using (ACLGetResponse response = service.ACLGet(request))
                {
                    string output = response.StreamResponseToString();
                    Console.WriteLine(output);
                }
            Console.WriteLine("\npress enter >");
            Console.ReadLine();

            Console.WriteLine("\n----- Deleting Objects -----");
            using (ObjectDeleteRequest request = new ObjectDeleteRequest(testBucketName, stringKeyName))
                using (ObjectDeleteResponse response = service.ObjectDelete(request))
                { }
            using (ObjectDeleteRequest request = new ObjectDeleteRequest(testBucketName2, stringKeyName + "Copy"))
                using (ObjectDeleteResponse response = service.ObjectDelete(request))
                { }
            using (ObjectDeleteRequest request = new ObjectDeleteRequest(testBucketName, uploadFile))
                using (ObjectDeleteResponse response = service.ObjectDelete(request))
                { }
            using (ObjectDeleteRequest request = new ObjectDeleteRequest(testBucketName, uploadFile + "Encrypted"))
                using (ObjectDeleteResponse response = service.ObjectDelete(request))
                { }
            using (ObjectDeleteRequest request = new ObjectDeleteRequest(testBucketName, stringKeyName + "Public"))
                using (ObjectDeleteResponse response = service.ObjectDelete(request))
                { }

            Console.WriteLine("\npress enter >");
            Console.ReadLine();

            Console.WriteLine("\n----- Listing Bucket " + testBucketName + " -----");
            using (BucketListRequest request = new BucketListRequest(testBucketName))
                using (BucketListResponse response = service.BucketList(request))
                {
                    Console.WriteLine(response.StreamResponseToString());
                }
            Console.WriteLine("\npress enter >");
            Console.ReadLine();

            Console.WriteLine("\n----- Listing Bucket " + testBucketName2 + " -----");
            using (BucketListRequest request = new BucketListRequest(testBucketName2))
                using (BucketListResponse response = service.BucketList(request))
                {
                    Console.WriteLine(response.StreamResponseToString());
                }
            Console.WriteLine("\npress enter >");
            Console.ReadLine();

            Console.WriteLine("\n----- Listing All My Buckets -----");
            using (BucketListRequest request = new BucketListRequest(null))
                using (BucketListResponse response = service.BucketList(request))
                {
                    Console.WriteLine(response.StreamResponseToString());
                }
            Console.WriteLine("\npress enter >");
            Console.ReadLine();

            Console.WriteLine("\n----- Deleting Bucket " + testBucketName + " -----");
            using (BucketDeleteRequest request = new BucketDeleteRequest(testBucketName))
                using (BucketDeleteResponse response = service.BucketDelete(request))
                { }
            Console.WriteLine("\npress enter >");
            Console.ReadLine();

            Console.WriteLine("\n----- Deleting Bucket " + testBucketName2 + " -----");
            using (BucketDeleteRequest request = new BucketDeleteRequest(testBucketName2))
                using (BucketDeleteResponse response = service.BucketDelete(request))
                { }
            Console.WriteLine("\npress enter >");
            Console.ReadLine();

            Console.WriteLine("\n----- Listing All My Buckets -----");
            using (BucketListRequest request = new BucketListRequest(null))
                using (BucketListResponse response = service.BucketList(request))
                {
                    Console.WriteLine(response.StreamResponseToString());
                }
            Console.WriteLine("\npress enter >");
            Console.ReadLine();

            Console.WriteLine("\nTotal data transfers: " + service.GetTransferInfos().Length.ToString());
            Console.WriteLine("Total bytes uploaded: " + service.GetTotalBytesUploaded().ToString());
            Console.WriteLine("Total bytes downloaded: " + service.GetTotalBytesDownloaded().ToString());
            Console.WriteLine("\npress enter >");
            Console.ReadLine();
        }