Skip to content

Commit 964412c

Browse files
committed
Update README.md: Add example on how to check if bucket exists by reading error
1 parent a2df8bb commit 964412c

1 file changed

Lines changed: 52 additions & 5 deletions

File tree

README.md

Lines changed: 52 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,16 @@ Each S3 Client is organized onto modular components:
2020

2121
int main() {
2222
S3Client client("minio_access", "minio_secret");
23+
2324
// List 100 objects with a prefix
24-
ListBucketResult response = client.ListObjects("my-bucket", "path/to/", 100);
25-
for (const auto& obj : response.Contents) {
25+
auto result = client.ListObjects("my-bucket", "path/to/", 100);
26+
27+
if (!result) {
28+
std::println("Error: {}", result.error().Message);
29+
return 1;
30+
}
31+
32+
for (const auto& obj : result->Contents) {
2633
std::println("Key: {}, Size: {}", obj.Key, obj.Size);
2734
}
2835
return 0;
@@ -41,17 +48,57 @@ int main() {
4148
int totalObjects = 0;
4249

4350
while (paginator.HasMorePages()) {
44-
ListBucketResult page = paginator.NextPage();
45-
totalObjects += page.KeyCount;
51+
std::expected<ListBucketResult, Error> page = paginator.NextPage();
52+
53+
if (!page) {
54+
std::println("Error: {}", page.error().Message);
55+
return 1;
56+
}
4657

47-
for (const auto& obj : page.Contents) {
58+
totalObjects += page->KeyCount;
59+
60+
for (const auto& obj : page->Contents) {
4861
std::println("Key: {}", obj.Key);
4962
}
5063
}
5164
return 0;
5265
}
5366
```
5467

68+
Checking if a bucket exists:
69+
70+
```cpp
71+
#include <s3cpp/s3.h>
72+
73+
bool BucketExists(S3Client& client, const std::string& bucketName) {
74+
auto result = client.ListObjects(bucketName, "", 1);
75+
76+
if (!result) {
77+
// Check the Resource Error field
78+
if (result.error().Resource == "/Does-not-exist") {
79+
return false;
80+
}
81+
// Other errors
82+
std::println("Error checking bucket: {}", result.error().Message);
83+
return false;
84+
}
85+
86+
return true;
87+
}
88+
89+
int main() {
90+
S3Client client("minio_access", "minio_secret");
91+
92+
if (BucketExists(client, "my-bucket")) {
93+
std::println("Bucket exists");
94+
} else {
95+
std::println("Bucket does not exist");
96+
}
97+
98+
return 0;
99+
}
100+
```
101+
55102
## Build and Test
56103
57104
```bash

0 commit comments

Comments
 (0)