UNPKG

@translated/lara

Version:

Official Lara SDK for JavaScript and Node.js

48 lines (47 loc) 1.86 kB
"use strict"; 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;