s3-bucket-stream
Version:
Readable stream of the Body of every object in an S3 bucket.
50 lines (49 loc) • 1.66 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const fs_1 = require("fs");
const s3object_1 = __importDefault(require("../aws/s3object"));
async function get(Bucket, Key) {
let buffer = await fs_1.promises.readFile(`./s4/${Bucket}/${Key}`);
let obj = new s3object_1.default(Key, Bucket, buffer.toString());
return obj;
}
exports.get = get;
async function put(Bucket, Key, Body) {
return new Promise((resolve) => {
fs_1.writeFile(`./s4/${Bucket}/${Key}`, Body, () => {
resolve();
});
});
}
exports.put = put;
async function list(Bucket, StartAfter = undefined, MaxKeys = 1000) {
return new Promise((resolve, reject) => {
fs_1.promises.readdir(`./s4/${Bucket}`).then((files) => {
let sorted = files.sort();
if (StartAfter === undefined) {
if (sorted.length > 0) {
resolve(sorted.slice(0, MaxKeys));
}
else {
reject();
}
}
else {
let startIndex = sorted.indexOf(StartAfter);
if (startIndex !== -1) {
resolve(sorted.slice(startIndex + 1, startIndex + 1 + MaxKeys));
}
else if (sorted.length > 0) {
resolve(sorted.slice(0, MaxKeys));
}
else {
reject();
}
}
});
});
}
exports.list = list;