コード例 #1
0
        public void Clear_RemovesAllObjects()
        {
            var directory = new Ess3Directory();

            var file1 = new Ess3File
            {
                Key = exampleKey
            };

            var file2 = new Ess3File
            {
                Key = exampleKey + "blabla"
            };

            directory.Add(file1);
            directory.Add(file2);

            if (directory.Ess3Objects.Count != 2)
            {
                throw new Exception($"there were supposed to be 2 objects, there were actually {directory.Ess3Objects.Count}");
            }

            directory.Clear();

            int expected = 0;
            int actual   = directory.Ess3Objects.Count;

            Assert.AreEqual(expected, actual);
        }
コード例 #2
0
        public void SetPrefixCorrectly_ForDirectories(string key, string prefix)
        {
            var directory = new Ess3Directory
            {
                Key = key
            };

            Assert.AreEqual(prefix, directory.Prefix, "directory's prefix: {0}, correct prefix: {1}", directory.Prefix, prefix);
        }
コード例 #3
0
        public void BucketSize_Calculation()
        {
            Random random = new Random(Environment.TickCount % 17);

            Int64 fileSize1 = (Int64)random.Next(10, Int32.MaxValue - 1);
            Int64 fileSize2 = (Int64)random.Next(10, Int32.MaxValue - 1);
            Int64 fileSize3 = (Int64)random.Next(10, Int32.MaxValue - 1);
            Int64 fileSize4 = (Int64)random.Next(10, Int32.MaxValue - 1);

            var file1 = new Ess3File(new S3Object {
                Size = fileSize1, Key = "file1"
            });
            var file2 = new Ess3File(new S3Object {
                Size = fileSize2, Key = "file2"
            });
            var file3 = new Ess3File(new S3Object {
                Size = fileSize3, Key = "file3"
            });
            var file4 = new Ess3File(new S3Object {
                Size = fileSize4, Key = "file4"
            });

            var directory1 = new Ess3Directory {
                Key = "dir1"
            };
            var directory2 = new Ess3Directory {
                Key = "dir2"
            };
            var directory3 = new Ess3Directory {
                Key = "dir3"
            };

            directory1.Add(file1);
            directory2.Add(file2);
            directory3.Add(file3);

            directory2.Add(directory3);
            directory1.Add(directory2);

            var bucket = new Ess3Bucket("bucket", DateTime.Now);

            bucket.Add(directory1);
            bucket.Add(file4);

            Int64 expected = fileSize1 + fileSize2 + fileSize3 + fileSize4;
            Int64 actual   = bucket.Size;

            Assert.AreEqual(expected, actual, "bucket has {0} objects ({1}, {2}, {3}, {4})", bucket.Ess3Objects.Count, fileSize1, fileSize2, fileSize3, fileSize4);
        }
コード例 #4
0
        public void Add_AddsWhenDoesNotAlreadyContain()
        {
            var directory = new Ess3Directory();

            var file = new Ess3File
            {
                Key = exampleKey
            };

            directory.Add(file);

            int expected = 1;
            int actual   = directory.Ess3Objects.Count;

            Assert.AreEqual(expected, actual);
        }
コード例 #5
0
        private static DeleteObjectsRequest CreateDirectoryDeletionRequest(Ess3Bucket bucket, Ess3Directory directory)
        {
            DeleteObjectsRequest request = new DeleteObjectsRequest
            {
                BucketName = bucket.BucketName
            };

            // delete the directory key itself
            request.AddKey(directory.Key);

            // delete every subdirectory key
            //foreach (Ess3Directory eachDirectory in bucket.Directories)
            //{
            //    request.AddKey(eachDirectory.Key);
            //}

            // delete every file key on the directory
            //foreach (Ess3File eachFile in bucket.Files)
            //{
            //    request.AddKey(eachFile.Key);
            //}

            foreach (Ess3Object each in bucket.Ess3Objects)
            {
                request.AddKey(each.Key);
            }

            return(request);
        }
コード例 #6
0
        public static async Task <bool> DirectoryAsync(IAccount account, Ess3Bucket bucket, Ess3Directory directory, bool failOnHasItems, CancellationToken token)
        {
            if (BucketHasItems(bucket) && failOnHasItems)
            {
                return(false);
            }

            DeleteObjectsRequest request = CreateDirectoryDeletionRequest(bucket, directory);

            using IAmazonS3 client = new AmazonS3Client(account.GetCredentials(), bucket.RegionEndpoint);

            DeleteObjectsResponse?response = await Helpers
                                             .RunWithCatchAsync <DeleteObjectsRequest, DeleteObjectsResponse>(client.DeleteObjectsAsync, request, token)
                                             .ConfigureAwait(false);

            return((response?.HttpStatusCode ?? HttpStatusCode.BadRequest) == HttpStatusCode.OK);
            // I don't know which status code translates to success
        }
コード例 #7
0
 public static Task <bool> DirectoryAsync(IAccount account, Ess3Bucket bucket, Ess3Directory directory, bool failOnHasItems)
 => DirectoryAsync(account, bucket, directory, failOnHasItems, CancellationToken.None);