public async Task ListParts() { await CreateTempBucketAsync(async bucket => { //We add the special characters at the end to test EncodingType support. string objName = nameof(ListParts) + "%"; CreateMultipartUploadResponse createResp = await MultipartClient.CreateMultipartUploadAsync(bucket, objName).ConfigureAwait(false); ListPartsResponse listResp1 = await MultipartClient.ListPartsAsync(bucket, objName, createResp.UploadId).ConfigureAwait(false); Assert.Equal(bucket, listResp1.BucketName); Assert.Equal(objName, listResp1.ObjectKey); Assert.Equal(createResp.UploadId, listResp1.UploadId); Assert.Equal(StorageClass.Standard, listResp1.StorageClass); Assert.Equal(0, listResp1.PartNumberMarker); Assert.Equal(0, listResp1.NextPartNumberMarker); Assert.Equal(1000, listResp1.MaxParts); Assert.False(listResp1.IsTruncated); Assert.Equal(TestConstants.TestUsername, listResp1.Owner.Name); Assert.Empty(listResp1.Parts); UploadPartResponse uploadResp; byte[] file = new byte[5 * 1024]; using (MemoryStream ms = new MemoryStream(file)) uploadResp = await MultipartClient.UploadPartAsync(bucket, objName, 1, createResp.UploadId, ms).ConfigureAwait(false); ListPartsResponse listResp2 = await MultipartClient.ListPartsAsync(bucket, objName, createResp.UploadId, req => req.EncodingType = EncodingType.Url).ConfigureAwait(false); Assert.Equal(bucket, listResp2.BucketName); Assert.Equal(WebUtility.UrlEncode(objName), listResp2.ObjectKey); //It should be encoded at this point Assert.Equal(createResp.UploadId, listResp2.UploadId); Assert.Equal(StorageClass.Standard, listResp2.StorageClass); Assert.Equal(0, listResp2.PartNumberMarker); Assert.Equal(1, listResp2.NextPartNumberMarker); Assert.Equal(1000, listResp2.MaxParts); Assert.False(listResp2.IsTruncated); Assert.Equal(TestConstants.TestUsername, listResp2.Owner.Name); S3Part part = Assert.Single(listResp2.Parts); Assert.Equal(1, part.PartNumber); Assert.Equal(DateTime.UtcNow, part.LastModified.DateTime, TimeSpan.FromSeconds(5)); Assert.Equal("\"32ca18808933aa12e979375d07048a11\"", part.ETag); Assert.Equal(file.Length, part.Size); await MultipartClient.CompleteMultipartUploadAsync(bucket, objName, createResp.UploadId, new[] { uploadResp }).ConfigureAwait(false); ListPartsResponse listResp3 = await MultipartClient.ListPartsAsync(bucket, objName, createResp.UploadId).ConfigureAwait(false); Assert.False(listResp3.IsSuccess); Assert.Equal(404, listResp3.StatusCode); }).ConfigureAwait(false); }
public async Task MultipartRequestPayer() { string objectKey = nameof(MultipartRequestPayer); CreateMultipartUploadResponse initResp = await MultipartClient.CreateMultipartUploadAsync(BucketName, objectKey, req => req.RequestPayer = Payer.Requester).ConfigureAwait(false); Assert.True(initResp.RequestCharged); byte[] file = new byte[1024 * 1024 * 5]; UploadPartResponse uploadResp = await MultipartClient.UploadPartAsync(BucketName, objectKey, 1, initResp.UploadId, new MemoryStream(file), req => req.RequestPayer = Payer.Requester).ConfigureAwait(false); Assert.True(uploadResp.RequestCharged); ListPartsResponse listResp = await MultipartClient.ListPartsAsync(BucketName, objectKey, initResp.UploadId, req => req.RequestPayer = Payer.Requester).ConfigureAwait(false); Assert.True(listResp.RequestCharged); CompleteMultipartUploadResponse completeResp = await MultipartClient.CompleteMultipartUploadAsync(BucketName, objectKey, initResp.UploadId, new[] { uploadResp }, req => req.RequestPayer = Payer.Requester).ConfigureAwait(false); Assert.True(completeResp.RequestCharged); }