UNPKG

@translated/lara

Version:

Official Lara SDK for JavaScript and Node.js

48 lines (47 loc) 1.82 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 client_1 = require("./client"); const stream_1 = require("stream"); const form_data_1 = __importDefault(require("form-data")); const https_1 = __importDefault(require("https")); const fs_1 = __importDefault(require("fs")); /** @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 = 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 = fs_1.default.createReadStream(file); if (file instanceof 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;