/// <summary>
        /// Create temporary S3 objects to show how object deletion wors in an
        /// S3 bucket with versioning enabled.
        /// </summary>
        /// <param name="client">The initialized S3 client object used to call
        /// PutObjectAsync to create temporary objects for the example.</param>
        /// <param name="bucketName">A string representing the name of the S3
        /// bucket where we will create the temporary objects.</param>
        /// <param name="number">The number of temporary objects to create.</param>
        /// <returns>A list of the KeyVersion objects.</returns>
        static async Task <List <KeyVersion> > PutObjectsAsync(IAmazonS3 client, string bucketName, int number)
        {
            var keys = new List <KeyVersion>();

            for (var i = 0; i < number; i++)
            {
                string           key     = "ObjectToDelete-" + new System.Random().Next();
                PutObjectRequest request = new PutObjectRequest
                {
                    BucketName  = bucketName,
                    Key         = key,
                    ContentBody = "This is the content body!",
                };

                var response = await client.PutObjectAsync(request);

                KeyVersion keyVersion = new KeyVersion
                {
                    Key       = key,
                    VersionId = response.VersionId,
                };

                keys.Add(keyVersion);
            }

            return(keys);
        }
Пример #2
0
        static async Task <List <KeyVersion> > PutObjectsAsync(int number)
        {
            List <KeyVersion> keys = new List <KeyVersion>();

            for (int i = 0; i < number; i++)
            {
                string           key     = "ExampleObject-" + new System.Random().Next();
                PutObjectRequest request = new PutObjectRequest
                {
                    BucketName  = bucketName,
                    Key         = key,
                    ContentBody = "This is the content body!",
                };

                PutObjectResponse response = await s3Client.PutObjectAsync(request);

                KeyVersion keyVersion = new KeyVersion
                {
                    Key = key,
                    // For non-versioned bucket operations, we only need object key.
                    // VersionId = response.VersionId
                };
                keys.Add(keyVersion);
            }
            return(keys);
        }
Пример #3
0
        private async Task <List <KeyVersion> > PutObjectsAsync(IEnumerable <S3Object> objes)
        {
            var keys = new List <KeyVersion>();

            foreach (var obj in objes)
            {
                PutObjectRequest request = new PutObjectRequest
                {
                    BucketName = BucketName,
                    Key        = obj.Key,
                    //ContentBody = "This is the content body!",
                };

                var response = await _client.PutObjectAsync(request);

                KeyVersion keyVersion = new KeyVersion
                {
                    Key       = obj.Key,
                    VersionId = response.VersionId
                };

                keys.Add(keyVersion);
            }
            return(keys);
        }
        /// <summary>
        /// Deletes the markers left after deleting the temporary objects.
        /// </summary>
        /// <param name="client">The initialized S3 client object used to call
        /// DeleteObjectVersionsAsync, DeleteObjectsAsync, and
        /// RemoveDeleteMarkersAsync.</param>
        /// <param name="bucketName">The name of the bucket from which to delete
        /// objects.</param>
        /// <param name="deletedObjects">A list of the objects that were deleted.</param>
        private static async Task RemoveDeleteMarkersAsync(IAmazonS3 client, string bucketName, List <DeletedObject> deletedObjects)
        {
            var keyVersionList = new List <KeyVersion>();

            foreach (var deletedObject in deletedObjects)
            {
                KeyVersion keyVersion = new KeyVersion
                {
                    Key       = deletedObject.Key,
                    VersionId = deletedObject.DeleteMarkerVersionId,
                };
                keyVersionList.Add(keyVersion);
            }

            // Create another request to delete the delete markers.
            var multiObjectDeleteRequest = new DeleteObjectsRequest
            {
                BucketName = bucketName,
                Objects    = keyVersionList,
            };

            // Now, delete the delete marker to bring your objects back to the bucket.
            try
            {
                Console.WriteLine("Removing the delete markers .....");
                var deleteObjectResponse = await client.DeleteObjectsAsync(multiObjectDeleteRequest);

                Console.WriteLine($"Successfully deleted the {deleteObjectResponse.DeletedObjects.Count} delete markers");
            }
            catch (DeleteObjectsException ex)
            {
                DisplayDeletionErrors(ex);
            }
        }
Пример #5
0
        private static async Task RemoveDeleteMarkersAsync(List <DeletedObject> deletedObjects)
        {
            var keyVersionList = new List <KeyVersion>();

            foreach (var deletedObject in deletedObjects)
            {
                KeyVersion keyVersion = new KeyVersion
                {
                    Key       = deletedObject.Key,
                    VersionId = deletedObject.DeleteMarkerVersionId
                };
                keyVersionList.Add(keyVersion);
            }
            // Create another request to delete the delete markers.
            var multiObjectDeleteRequest = new DeleteObjectsRequest
            {
                BucketName = bucketName,
                Objects    = keyVersionList
            };

            // Now, delete the delete marker to bring your objects back to the bucket.
            try
            {
                Console.WriteLine("Removing the delete markers .....");
                var deleteObjectResponse = await s3Client.DeleteObjectsAsync(multiObjectDeleteRequest);

                Console.WriteLine("Successfully deleted all the {0} delete markers",
                                  deleteObjectResponse.DeletedObjects.Count);
            }
            catch (DeleteObjectsException e)
            {
                PrintDeletionReport(e);
            }
        }
        static void DeleteMultiple()
        {
            List <KeyVersion> versions = new List <KeyVersion>();

            while (true)
            {
                string key = Common.InputString("Key [null to end]:", null, true);
                if (String.IsNullOrEmpty(key))
                {
                    break;
                }
                int        ver     = Common.InputInteger("Version:", 1, true, false);
                KeyVersion version = new KeyVersion();
                version.Key       = key;
                version.VersionId = ver.ToString();
                versions.Add(version);
            }

            DeleteObjectsRequest request = new DeleteObjectsRequest();

            request.BucketName = _Bucket;
            request.Objects    = versions;

            DeleteObjectsResponse response = _S3Client.DeleteObjectsAsync(request).Result;
            int statusCode = (int)response.HttpStatusCode;

            if (response != null)
            {
                Console.WriteLine("Deleted objects:");
                if (response.DeletedObjects != null && response.DeletedObjects.Count > 0)
                {
                    foreach (DeletedObject curr in response.DeletedObjects)
                    {
                        Console.WriteLine("  " + curr.Key + " version " + curr.VersionId);
                    }
                }
                else
                {
                    Console.WriteLine("  (none)");
                }
                Console.WriteLine("Errors:");
                if (response.DeleteErrors != null && response.DeleteErrors.Count > 0)
                {
                    foreach (DeleteError curr in response.DeleteErrors)
                    {
                        Console.WriteLine("  " + curr.Key + " version " + curr.VersionId);
                    }
                }
                else
                {
                    Console.WriteLine("  (none)");
                }
                Console.WriteLine("Success");
            }
            else
            {
                Console.WriteLine("Failed");
            }
        }
Пример #7
0
        /* 3. Delete an Object */

        public static void DeleteFileFromS3(string folderName, string FileName)
        {
            try
            {
                ListObjectsRequest request = new ListObjectsRequest();
                request.BucketName = "takatanet-test-bucket";
                request.Prefix     = string.IsNullOrEmpty(FileName) ? folderName + "/" : folderName + "/" + FileName;
                ListObjectsResponse response = s3Client.ListObjects(request);
                List <KeyVersion>   keys     = new List <KeyVersion>();
                foreach (S3Object obj in response.S3Objects)
                {
                    KeyVersion keyVersion = new KeyVersion()
                    {
                        Key = obj.Key
                    };
                    keys.Add(keyVersion);
                    //S3FileInfo s3FileInfo = new Amazon.S3.IO.S3FileInfo(s3Client, request.BucketName, obj.Key);
                    //s3FileInfo.Delete();
                }
                MultiObjectDelete(keys);


                //DeleteObjectRequest objRequest = new DeleteObjectRequest()
                //{
                //    BucketName = "takatanet-test-bucket",
                //    Key = string.IsNullOrEmpty(FileName)? folderName + "/" : folderName + "/" + FileName
                //};
                //DeleteObjectResponse reponse = s3Client.DeleteObject(objRequest);
                //S3FileInfo s3FileInfo = new Amazon.S3.IO.S3FileInfo(s3Client, objRequest.BucketName, objRequest.Key);
                //s3FileInfo.Delete();
            }
            catch (AmazonS3Exception amazonS3Exception)
            {
                if (amazonS3Exception.ErrorCode != null &&
                    (amazonS3Exception.ErrorCode.Equals("InvalidAccessKeyId")
                     ||
                     amazonS3Exception.ErrorCode.Equals("InvalidSecurity")))
                {
                    Console.WriteLine("Check the provided AWS Credentials.");
                    Console.WriteLine(
                        "For service sign up go to http://aws.amazon.com/s3");
                }
                else
                {
                    Console.WriteLine(
                        "Error occurred. Message:'{0}' when writing an object"
                        , amazonS3Exception.Message);
                }
            }
        }
Пример #8
0
        public void DeleteObject()
        {
            this.ResultText.text = $"deleting {this.SampleFileName} from bucket {this.S3BucketName}";
            List <KeyVersion> list = new List <KeyVersion>();
            KeyVersion        item = new KeyVersion();

            item.set_Key(this.SampleFileName);
            list.Add(item);
            DeleteObjectsRequest request2 = new DeleteObjectsRequest();

            request2.set_BucketName(this.S3BucketName);
            request2.set_Objects(list);
            DeleteObjectsRequest request = request2;

            this.Client.DeleteObjectsAsync(request, new AmazonServiceCallback <DeleteObjectsRequest, DeleteObjectsResponse>(this, this.< DeleteObject > m__9), null);
        }
Пример #9
0
        public static MasterKey Create(KeyVersion version, string fullName, char[] masterPassword)
        {
            switch (version)
            {
            case KeyVersion.V0:
                return(new MasterKeyV0(fullName).Revalidate(masterPassword));

            case KeyVersion.V1:
                return(new MasterKeyV1(fullName).Revalidate(masterPassword));

            case KeyVersion.V2:
                return(new MasterKeyV2(fullName).Revalidate(masterPassword));

            case KeyVersion.V3:
                return(new MasterKeyV3(fullName).Revalidate(masterPassword));
            }
            throw new InvalidOperationException($"Unsupported version: {version}");
        }
Пример #10
0
        public static string ToBundleVersion(KeyVersion e)
        {
            switch (e)
            {
            case KeyVersion.V0:
                return("1.0");

            case KeyVersion.V1:
                return("2.0");

            case KeyVersion.V2:
                return("2.1");

            case KeyVersion.V3:
                return("2.2");
            }
            throw new InvalidOperationException($"Unsupported version: {e}");
        }
Пример #11
0
        private void DeletePartFiles(string backet_name, List <string> keys)
        {
            DeleteObjectsRequest deleteRequest = new DeleteObjectsRequest()
            {
                BucketName = backet_name
            };

            foreach (var item in keys)
            {
                KeyVersion key = new KeyVersion()
                {
                    Key = item
                };
                deleteRequest.Objects.Add(key);
            }

            var result = _client.DeleteObjectsAsync(deleteRequest).GetAwaiter().GetResult();
        }
Пример #12
0
        /// <summary>
        /// 删除搜狐云CDN文件
        /// </summary>
        /// <param name="key">缓存文件Key</param>
        public void ClearSoHuYun(string key)
        {
            #region 验证密钥
            string           accessKey     = System.Configuration.ConfigurationManager.AppSettings["accessKey"];
            string           secretKey     = System.Configuration.ConfigurationManager.AppSettings["secretKey"];
            SHSCSCredentials myCredentials = new BasicSHSCSCredentials(accessKey, secretKey);
            #endregion

            SohuCSClient client = new SohuCSClient(myCredentials, RegionEndpoint.BJCNC);
            try
            {
                string[] keyArray = key.Split(new Char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
                if (keyArray != null && keyArray.Length > 0)
                {
                    ListBucketsResponse bucketsResponse = client.ListBuckets();
                    foreach (SCSBucket bucket in bucketsResponse.Buckets)
                    {
                        List <KeyVersion> keyList = new List <KeyVersion>();
                        foreach (var item in keyArray)
                        {
                            KeyVersion kv = new KeyVersion();
                            kv.Key = item;
                            //kv.VersionId = "";
                            keyList.Add(kv);
                        }
                        DeleteObjectsRequest request = new DeleteObjectsRequest
                        {
                            BucketName = bucket.BucketName, //空间
                            Objects    = keyList
                        };
                        DeleteObjectsResponse response = client.DeleteObjects(request);
                    }
                }
            }
            catch (DeleteObjectsException ex)
            {
                throw ex;
            }
        }
Пример #13
0
        public async Task <DeleteObjectsResponse> DeleteObjects(string[] objectPaths, string[] versionIds = null)
        {
            var keyVersions = new List <KeyVersion>();

            for (var i = 0; i < objectPaths.Length; i++)
            {
                var objectPath = objectPaths[i];

                var keyVersion = new KeyVersion()
                {
                    Key = objectPath,
                };

                if (versionIds != null)
                {
                    var versionId = versionIds.ElementAtOrDefault(i);

                    if (!string.IsNullOrEmpty(versionId))
                    {
                        keyVersion.VersionId = versionId;
                    }
                }

                keyVersions.Add(keyVersion);
            }

            var request = new DeleteObjectsRequest
            {
                BucketName = BucketName,
                Objects    = keyVersions,
            };

            var response = await client.DeleteObjectsAsync(request);

            return(response);
        }
 private static void CollectAllRecursiveKeys(KeyVersion keys)
 {
     recursiveContentList.Add(keys);
 }
Пример #15
0
        /// <summary>
        /// Initializes a new instance of the <see cref="Keyczar"/> class.
        /// </summary>
        /// <param name="keySet">The key set.</param>
        protected Keyczar(IKeySet keySet)
        {
            var metadata = keySet.Metadata;

            var versions = metadata
                .Versions
                .Select(v =>
                            {
                                var key = keySet.GetKey(v.VersionNumber);
                                return Tuple.Create(key.GetKeyHash(), v, key);
                            })
                .ToList();

            _primaryVersion = metadata.Versions.SingleOrDefault(it => it.Status == KeyStatus.Primary);

            _versions = versions.ToDictionary(k => k.Item2.VersionNumber, v => v.Item3);

            _hashedKeys = HashKeys(versions);
            _hashedFallbackKeys = HashedFallbackKeys(versions);
        }