@translated/lara
Version:
Official Lara SDK for JavaScript and Node.js
48 lines (47 loc) • 1.86 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.NodeS3Client = void 0;
const node_fs_1 = __importDefault(require("node:fs"));
const node_https_1 = __importDefault(require("node:https"));
const node_stream_1 = require("node:stream");
const form_data_1 = __importDefault(require("form-data"));
const client_1 = require("./client");
/** @internal */
class NodeS3Client extends client_1.S3Client {
async _upload(url, fields, file) {
const formData = new form_data_1.default();
for (const [key, value] of Object.entries(fields)) {
formData.append(key, value);
}
formData.append("file", file);
return new Promise((resolve, reject) => {
formData.submit(url, (err) => {
if (err)
return reject(err);
resolve();
});
});
}
async download(url) {
return new Promise((resolve, reject) => {
const req = node_https_1.default.request(url, { method: "GET" }, (res) => {
const chunks = [];
res.on("data", (chunk) => chunks.push(Buffer.from(chunk)));
res.on("end", () => resolve(Buffer.concat(chunks)));
});
req.on("error", reject);
req.end();
});
}
wrapMultiPartFile(file) {
if (typeof file === "string")
file = node_fs_1.default.createReadStream(file);
if (file instanceof node_stream_1.Readable)
return file;
throw new TypeError(`Invalid file input in Node.js. Expected a Readable stream or a valid file path, but received ${typeof file}.`);
}
}
exports.NodeS3Client = NodeS3Client;