public async Task ListObjectsWithOwner() { await CreateTempBucketAsync(async bucket => { string tempObjName = "object-" + Guid.NewGuid(); await ObjectClient.PutObjectStringAsync(bucket, tempObjName, "hello", config: req => req.AclGrantFullControl.AddEmail(TestConstants.TestEmail)).ConfigureAwait(false); ListObjectsResponse resp = await ObjectClient.ListObjectsAsync(bucket, req => req.FetchOwner = true).ConfigureAwait(false); Assert.True(resp.IsSuccess); S3Object obj = resp.Objects.First(); Assert.Equal(TestConstants.TestUsername, obj.Owner.Name); Assert.Equal(TestConstants.TestUserId, obj.Owner.Id); }).ConfigureAwait(false); }
public async Task ListObjectsWithEncoding() { await CreateTempBucketAsync(async bucket => { string tempObjName = "!#/()"; await ObjectClient.PutObjectStringAsync(bucket, tempObjName, string.Empty).ConfigureAwait(false); ListObjectsResponse resp = await ObjectClient.ListObjectsAsync(bucket, req => req.EncodingType = EncodingType.Url).ConfigureAwait(false); Assert.True(resp.IsSuccess); Assert.Equal(EncodingType.Url, resp.EncodingType); S3Object obj = Assert.Single(resp.Objects); Assert.Equal("%21%23/%28%29", obj.ObjectKey); }).ConfigureAwait(false); }
public async Task ListObjectsWithDelimiter() { await CreateTempBucketAsync(async bucket => { string tempObjName = "object-" + Guid.NewGuid(); string tempObjName2 = "something-" + Guid.NewGuid(); await ObjectClient.PutObjectStringAsync(bucket, tempObjName, "hello").ConfigureAwait(false); await ObjectClient.PutObjectStringAsync(bucket, tempObjName2, "world!").ConfigureAwait(false); ListObjectsResponse resp = await ObjectClient.ListObjectsAsync(bucket, req => req.Delimiter = "-").ConfigureAwait(false); Assert.True(resp.IsSuccess); Assert.Equal("-", resp.Delimiter); Assert.Equal(2, resp.KeyCount); Assert.Equal(2, resp.CommonPrefixes.Count); Assert.Equal("object-", resp.CommonPrefixes[0]); Assert.Equal("something-", resp.CommonPrefixes[1]); }).ConfigureAwait(false); }
public async Task ListObjectsWithPrefix() { await CreateTempBucketAsync(async bucket => { string tempObjName = "object-" + Guid.NewGuid(); string tempObjName2 = "something-" + Guid.NewGuid(); await ObjectClient.PutObjectStringAsync(bucket, tempObjName, "hello").ConfigureAwait(false); await ObjectClient.PutObjectStringAsync(bucket, tempObjName2, "world!").ConfigureAwait(false); ListObjectsResponse resp = await ObjectClient.ListObjectsAsync(bucket, req => req.Prefix = "object").ConfigureAwait(false); Assert.True(resp.IsSuccess); Assert.Equal(1, resp.KeyCount); Assert.Equal("object", resp.Prefix); S3Object obj = Assert.Single(resp.Objects); Assert.Equal(tempObjName, obj.ObjectKey); }).ConfigureAwait(false); }
public async Task DeleteBucket() { string tempBucketName = "testbucket-" + Guid.NewGuid(); DeleteBucketResponse deleteResp1 = await BucketClient.DeleteBucketAsync(tempBucketName).ConfigureAwait(false); Assert.False(deleteResp1.IsSuccess); Assert.Equal(ErrorCode.NoSuchBucket, deleteResp1.Error?.Code); await BucketClient.CreateBucketAsync(tempBucketName).ConfigureAwait(false); DeleteBucketResponse deleteResp2 = await BucketClient.DeleteBucketAsync(tempBucketName).ConfigureAwait(false); Assert.True(deleteResp2.IsSuccess); Assert.Equal(204, deleteResp2.StatusCode); ListObjectsResponse listResp = await ObjectClient.ListObjectsAsync(tempBucketName).ConfigureAwait(false); Assert.False(listResp.IsSuccess); Assert.Equal(404, listResp.StatusCode); }
public async Task ListObjectsMoreThanMaxKeys() { await CreateTempBucketAsync(async bucket => { int concurrent = 10; int count = 11; Queue <Task> tasks = new Queue <Task>(count); using (SemaphoreSlim semaphore = new SemaphoreSlim(concurrent)) { for (int i = 0; i < count; i++) { await semaphore.WaitAsync().ConfigureAwait(false); string tempObjName = "object-" + Guid.NewGuid(); tasks.Enqueue(UploadString(bucket, tempObjName, semaphore)); } await Task.WhenAll(tasks).ConfigureAwait(false); } ListObjectsResponse gResp = await ObjectClient.ListObjectsAsync(bucket, req => req.MaxKeys = count - 1).ConfigureAwait(false); Assert.True(gResp.IsSuccess); Assert.Equal(count - 1, gResp.KeyCount); Assert.Equal(count - 1, gResp.Objects.Count); Assert.NotEmpty(gResp.NextContinuationToken); Assert.True(gResp.IsTruncated); ListObjectsResponse gResp2 = await ObjectClient.ListObjectsAsync(bucket, req => req.ContinuationToken = gResp.NextContinuationToken).ConfigureAwait(false); Assert.True(gResp2.IsSuccess); Assert.Equal(1, gResp2.KeyCount); Assert.Equal(1, gResp2.Objects.Count); Assert.Equal(gResp.NextContinuationToken, gResp2.ContinuationToken); Assert.Null(gResp2.NextContinuationToken); Assert.False(gResp2.IsTruncated); }).ConfigureAwait(false); }
public async Task ListObjects() { await CreateTempBucketAsync(async bucket => { string tempObjName = "object-" + Guid.NewGuid(); await ObjectClient.PutObjectStringAsync(bucket, tempObjName, "hello").ConfigureAwait(false); ListObjectsResponse gResp = await ObjectClient.ListObjectsAsync(bucket).ConfigureAwait(false); Assert.True(gResp.IsSuccess); Assert.Equal(bucket, gResp.BucketName); Assert.Equal(1, gResp.KeyCount); Assert.Equal(1000, gResp.MaxKeys); Assert.False(gResp.IsTruncated); S3Object obj = gResp.Objects.First(); Assert.Equal(tempObjName, obj.ObjectKey); Assert.Equal("\"5d41402abc4b2a76b9719d911017c592\"", obj.ETag); Assert.Equal(StorageClass.Standard, obj.StorageClass); Assert.Equal(5, obj.Size); Assert.Equal(DateTime.UtcNow, obj.LastModifiedOn.UtcDateTime, TimeSpan.FromSeconds(5)); }).ConfigureAwait(false); }
public async Task ListObjectsRequestPayer() { ListObjectsResponse resp = await ObjectClient.ListObjectsAsync(BucketName, req => req.RequestPayer = Payer.Requester).ConfigureAwait(false); Assert.True(resp.RequestCharged); }