UNPKG

wundertec-core

Version:

Librería estándar de utilidades e integraciones AWS + helpers generales

63 lines (62 loc) 2.29 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.uploadObject = uploadObject; exports.getObject = getObject; exports.deleteObject = deleteObject; exports.getSignedGetUrl = getSignedGetUrl; exports.getSignedPutUrl = getSignedPutUrl; const client_s3_1 = require("@aws-sdk/client-s3"); const s3_request_presigner_1 = require("@aws-sdk/s3-request-presigner"); const s3Client = new client_s3_1.S3Client({ region: process.env.AWS_REGION }); /** * Sube un objeto a S3. */ async function uploadObject(bucket, key, body, options) { const command = new client_s3_1.PutObjectCommand({ Bucket: bucket, Key: key, Body: body, ...options, }); return s3Client.send(command); } /** * Obtiene un objeto de S3 como Buffer. */ async function getObject(bucket, key) { const command = new client_s3_1.GetObjectCommand({ Bucket: bucket, Key: key }); const response = await s3Client.send(command); const stream = response.Body; return streamToBuffer(stream); } async function streamToBuffer(stream) { return new Promise((resolve, reject) => { const chunks = []; stream.on("data", (chunk) => chunks.push(chunk)); stream.on("error", reject); stream.on("end", () => resolve(Buffer.concat(chunks))); }); } /** * Elimina un objeto de S3. */ async function deleteObject(bucket, key) { const command = new client_s3_1.DeleteObjectCommand({ Bucket: bucket, Key: key }); return s3Client.send(command); } /** * Genera un URL firmado para descargar (GET) un objeto privado. * @param expiresIn Segundos de validez del URL (por defecto 900 = 15 minutos). */ async function getSignedGetUrl(bucket, key, expiresIn = 900) { const command = new client_s3_1.GetObjectCommand({ Bucket: bucket, Key: key }); return (0, s3_request_presigner_1.getSignedUrl)(s3Client, command, { expiresIn }); } /** * Genera un URL firmado para subir (PUT) un objeto privado. * @param expiresIn Segundos de validez del URL (por defecto 900 = 15 minutos). */ async function getSignedPutUrl(bucket, key, expiresIn = 900) { const command = new client_s3_1.PutObjectCommand({ Bucket: bucket, Key: key }); return (0, s3_request_presigner_1.getSignedUrl)(s3Client, command, { expiresIn }); }