Skip to content

Commit a867b5d

Browse files
committed
Fixes for empty lists.
1 parent fe33ce0 commit a867b5d

4 files changed

Lines changed: 33 additions & 28 deletions

File tree

.doc_gen/metadata/s3_metadata.yaml

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -234,12 +234,16 @@ s3_CopyObject:
234234
languages:
235235
.NET:
236236
versions:
237+
- sdk_version: 4
238+
github: dotnetv4/S3
239+
sdkguide:
240+
excerpts:
241+
- description:
242+
snippet_tags:
243+
- S3.dotnetv4.S3_Basics-CopyObject
237244
- sdk_version: 3
238245
github: dotnetv3/S3
239246
excerpts:
240-
- description:
241-
snippet_tags:
242-
- S3.dotnet35.CopyObject
243247
- description: Copy an object using a conditional request.
244248
genai: some
245249
snippet_tags:

dotnetv3/S3/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ For prerequisites, see the [README](../README.md#Prerequisites) in the `dotnetv3
3333

3434
Code excerpts that show you how to call individual service functions.
3535

36-
- [CopyObject](CopyObjectExample/CopyObject.cs#L11)
36+
- [CopyObject](scenarios/S3ConditionalRequestsScenario/S3ConditionalRequests/S3ActionsWrapper.cs#L137)
3737
- [CreateBucket](scenarios/S3ObjectLockScenario/S3ObjectLockWorkflow/S3ActionsWrapper.cs#L29)
3838
- [DeleteBucketCors](s3CORSExample/S3CORS.cs#L147)
3939
- [DeleteBucketLifecycle](LifecycleExample/Lifecycle.cs#L192)

dotnetv4/S3/README.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,12 +40,13 @@ Code examples that show you how to perform the essential operations within a ser
4040

4141
Code excerpts that show you how to call individual service functions.
4242

43+
- [CopyObject](Scenarios/S3_Basics/S3Bucket.cs#L134)
4344
- [CreateBucket](Scenarios/S3_Basics/S3Bucket.cs#L24)
4445
- [CreatePresignedPost](Scenarios/S3_CreatePresignedPost/S3Wrapper.cs#L35)
4546
- [DeleteBucket](Scenarios/S3_Basics/S3Bucket.cs#L261)
46-
- [DeleteObjects](Scenarios/S3_Basics/S3Bucket.cs#L224)
47+
- [DeleteObjects](Scenarios/S3_Basics/S3Bucket.cs#L225)
4748
- [GetObject](Scenarios/S3_Basics/S3Bucket.cs#L93)
48-
- [ListObjectsV2](Scenarios/S3_Basics/S3Bucket.cs#L175)
49+
- [ListObjectsV2](Scenarios/S3_Basics/S3Bucket.cs#L173)
4950
- [PutObject](Scenarios/S3_Basics/S3Bucket.cs#L54)
5051

5152
### Scenarios

dotnetv4/S3/Scenarios/S3_Basics/S3Bucket.cs

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -108,14 +108,12 @@ public async Task<bool> DownloadObjectFromBucketAsync(
108108
string objectName,
109109
string filePath)
110110
{
111-
// Create a GetObject request
112111
var request = new GetObjectRequest
113112
{
114113
BucketName = bucketName,
115114
Key = objectName,
116115
};
117116

118-
// Issue request and remember to dispose of the response
119117
using GetObjectResponse response = await _amazonS3.GetObjectAsync(request);
120118

121119
try
@@ -177,11 +175,10 @@ public async Task<bool> CopyObjectInBucketAsync(
177175
/// <summary>
178176
/// Shows how to list the objects in an Amazon S3 bucket.
179177
/// </summary>
180-
/// <param name="bucketName">The name of the bucket for which to list
178+
/// <param name="bucketName">The name of the bucket for which to list.
181179
/// the contents.</param>
182-
/// <returns>A boolean value indicating the success or failure of the
183-
/// copy operation.</returns>
184-
public async Task<bool> ListBucketContentsAsync(string bucketName)
180+
/// <returns>The collection of objects.</returns>
181+
public async Task<List<S3Object>> ListBucketContentsAsync(string bucketName)
185182
{
186183
try
187184
{
@@ -199,23 +196,27 @@ public async Task<bool> ListBucketContentsAsync(string bucketName)
199196
{
200197
BucketName = bucketName,
201198
});
202-
199+
var s3Objects = new List<S3Object>();
203200
await foreach (var response in listObjectsV2Paginator.Responses)
204201
{
205-
Console.WriteLine($"HttpStatusCode: {response.HttpStatusCode}");
206-
Console.WriteLine($"Number of Keys: {response.KeyCount}");
207-
foreach (var entry in response.S3Objects)
202+
if (response.S3Objects != null)
208203
{
209-
Console.WriteLine($"Key = {entry.Key} Size = {entry.Size}");
204+
s3Objects.AddRange(response.S3Objects);
210205
}
211206
}
212207

213-
return true;
208+
Console.WriteLine($"Number of Objects: {s3Objects.Count}");
209+
foreach (var entry in s3Objects)
210+
{
211+
Console.WriteLine($"Key = {entry.Key} Size = {entry.Size}");
212+
}
213+
214+
return s3Objects;
214215
}
215216
catch (AmazonS3Exception ex)
216217
{
217218
Console.WriteLine($"Error encountered on server. Message:'{ex.Message}' getting list of objects.");
218-
return false;
219+
return null;
219220
}
220221
}
221222

@@ -236,16 +237,15 @@ public async Task<bool> DeleteBucketContentsAsync(string bucketName)
236237
try
237238
{
238239
// Delete all objects in the bucket.
239-
var deleteList = await _amazonS3.ListObjectsV2Async(new ListObjectsV2Request()
240+
var deleteList = await ListBucketContentsAsync(bucketName);
241+
if (deleteList != null && deleteList.Any())
240242
{
241-
BucketName = bucketName,
242-
});
243-
await _amazonS3.DeleteObjectsAsync(new DeleteObjectsRequest()
244-
{
245-
BucketName = bucketName,
246-
Objects = deleteList.S3Objects
247-
.Select(o => new KeyVersion { Key = o.Key }).ToList(),
248-
});
243+
await _amazonS3.DeleteObjectsAsync(new DeleteObjectsRequest()
244+
{
245+
BucketName = bucketName,
246+
Objects = deleteList.Select(o => new KeyVersion { Key = o.Key }).ToList(),
247+
});
248+
}
249249

250250
return true;
251251
}

0 commit comments

Comments
 (0)