File tree 3 files changed +80
-1
lines changed
3 files changed +80
-1
lines changed Original file line number Diff line number Diff line change 3
3
DeleteBucketCommand ,
4
4
GetBucketAclCommand ,
5
5
ListBucketsCommand ,
6
- PutBucketAclCommand ,
6
+ PutBucketAclCommand , PutBucketTaggingCommand ,
7
7
S3Client ,
8
8
} from "@aws-sdk/client-s3" ;
9
9
@@ -130,6 +130,39 @@ class BucketManager {
130
130
} ) ;
131
131
return ! ( typeof readPermission !== "undefined" ) ;
132
132
}
133
+
134
+ /**
135
+ * @summary Generates the IPFS Directory/Folder CID for a given bucket
136
+ * @param {string } name - The name of the bucket to use.
137
+ * @returns {Promise<boolean> } A promise that resolves with the CID of the new directory/folder
138
+ */
139
+ async generateCid ( name ) {
140
+ const command = new PutBucketTaggingCommand ( {
141
+ Bucket : name ,
142
+ Tagging : {
143
+ TagSet : [
144
+ {
145
+ Key : "generateBucketCid" ,
146
+ Value : "true"
147
+ }
148
+ ]
149
+ }
150
+ } ) ;
151
+
152
+ let cid = false ;
153
+ command . middlewareStack . add (
154
+ ( next ) => async ( args ) => {
155
+ const response = await next ( args ) ;
156
+
157
+ // Get cid from headers
158
+ cid = response . response . headers [ "x-amz-meta-cid" ] ;
159
+ return response ;
160
+ }
161
+ ) ;
162
+
163
+ await this . #client. send ( command ) ;
164
+ return cid ;
165
+ }
133
166
}
134
167
135
168
export default BucketManager ;
Original file line number Diff line number Diff line change @@ -30,6 +30,29 @@ test("create bucket", async () => {
30
30
}
31
31
} ) ;
32
32
33
+ test ( "generate bucket cid" , async ( ) => {
34
+ // Initialize BucketManager
35
+ const bucketManager = new BucketManager (
36
+ process . env . TEST_S3_KEY || process . env . TEST_KEY ,
37
+ process . env . TEST_S3_SECRET || process . env . TEST_SECRET ,
38
+ ) ;
39
+
40
+ // Create bucket `create-bucket-test-pass`
41
+ const bucketNameToGenerate = `${ TEST_PREFIX } -generate-bucket-test-pass` ;
42
+ await bucketManager . create ( bucketNameToGenerate ) ;
43
+
44
+ try {
45
+ // Generate bucket CID
46
+ const generatedCid = await bucketManager . generateCid ( bucketNameToGenerate ) ;
47
+
48
+ // Assert new bucket exists
49
+ assert . equal ( generatedCid , "bafybeiczsscdsbs7ffqz55asqdf3smv6klcw3gofszvwlyarci47bgf354" ) ;
50
+ } finally {
51
+ // Delete new bucket
52
+ await bucketManager . delete ( bucketNameToGenerate ) ;
53
+ }
54
+ } ) ;
55
+
33
56
test ( "list buckets" , async ( ) => {
34
57
const testBucketName = `${ TEST_PREFIX } -list-bucket-test-pass` ,
35
58
bucketManager = new BucketManager (
Original file line number Diff line number Diff line change @@ -30,6 +30,29 @@ test("create bucket", async () => {
30
30
}
31
31
} ) ;
32
32
33
+ test ( "generate bucket cid" , async ( ) => {
34
+ // Initialize BucketManager
35
+ const bucketManager = new BucketManager (
36
+ process . env . TEST_S3_KEY || process . env . TEST_KEY ,
37
+ process . env . TEST_S3_SECRET || process . env . TEST_SECRET ,
38
+ ) ;
39
+
40
+ // Create bucket `create-bucket-test-pass`
41
+ const bucketNameToGenerate = `${ TEST_PREFIX } -generate-bucket-test-pass` ;
42
+ await bucketManager . create ( bucketNameToGenerate ) ;
43
+
44
+ try {
45
+ // Generate bucket CID
46
+ const generatedCid = await bucketManager . generateCid ( bucketNameToGenerate ) ;
47
+
48
+ // Assert new bucket exists
49
+ assert . equal ( generatedCid , "bafybeiczsscdsbs7ffqz55asqdf3smv6klcw3gofszvwlyarci47bgf354" ) ;
50
+ } finally {
51
+ // Delete new bucket
52
+ await bucketManager . delete ( bucketNameToGenerate ) ;
53
+ }
54
+ } ) ;
55
+
33
56
test ( "list buckets" , async ( ) => {
34
57
const testBucketName = `${ TEST_PREFIX } -list-bucket-test-pass` ,
35
58
bucketManager = new BucketManager (
You can’t perform that action at this time.
0 commit comments