@@ -20,9 +20,16 @@ Each S3 Client is organized onto modular components:
2020
2121int 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