S3 for other controolers
This commit is contained in:
@@ -2,6 +2,8 @@ const {
|
||||
S3Client,
|
||||
PutObjectCommand,
|
||||
DeleteObjectCommand,
|
||||
ListObjectsV2Command,
|
||||
GetObjectCommand,
|
||||
} = require("@aws-sdk/client-s3");
|
||||
|
||||
const config = {
|
||||
@@ -85,9 +87,54 @@ const deleteObject = async (key) => {
|
||||
);
|
||||
};
|
||||
|
||||
const listObjects = async (prefix = "") => {
|
||||
const keys = [];
|
||||
let continuationToken;
|
||||
|
||||
do {
|
||||
const response = await getClient().send(
|
||||
new ListObjectsV2Command({
|
||||
Bucket: config.bucket,
|
||||
Prefix: normalizeKey(prefix),
|
||||
ContinuationToken: continuationToken,
|
||||
})
|
||||
);
|
||||
|
||||
for (const item of response.Contents || []) {
|
||||
if (item.Key) keys.push(item.Key);
|
||||
}
|
||||
|
||||
continuationToken = response.IsTruncated
|
||||
? response.NextContinuationToken
|
||||
: undefined;
|
||||
} while (continuationToken);
|
||||
|
||||
return keys;
|
||||
};
|
||||
|
||||
const getObjectBuffer = async (key) => {
|
||||
const response = await getClient().send(
|
||||
new GetObjectCommand({
|
||||
Bucket: config.bucket,
|
||||
Key: normalizeKey(key),
|
||||
})
|
||||
);
|
||||
|
||||
return Buffer.from(await response.Body.transformToByteArray());
|
||||
};
|
||||
|
||||
const deleteObjectsByPrefix = async (prefix) => {
|
||||
const keys = await listObjects(prefix);
|
||||
|
||||
await Promise.all(keys.map((key) => deleteObject(key)));
|
||||
};
|
||||
|
||||
module.exports = {
|
||||
isConfigured,
|
||||
getPublicUrl,
|
||||
uploadBuffer,
|
||||
deleteObject,
|
||||
listObjects,
|
||||
getObjectBuffer,
|
||||
deleteObjectsByPrefix,
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user