UNPKG

streamby-core

Version:

StreamBy middleware framework for media storage management

69 lines (68 loc) 2.61 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.S3Adapter = void 0; const client_s3_1 = require("@aws-sdk/client-s3"); const s3_request_presigner_1 = require("@aws-sdk/s3-request-presigner"); class S3Adapter { constructor(config) { this.s3 = new client_s3_1.S3Client({ region: config.region, credentials: { accessKeyId: config.accessKeyId, secretAccessKey: config.secretAccessKey, }, }); this.bucket = config.bucket; } async listFiles(projectId) { const command = new client_s3_1.ListObjectsV2Command({ Bucket: this.bucket, Prefix: `${projectId}/`, }); const result = await this.s3.send(command); return result.Contents || []; } async deleteProjectImage(projectId) { const command = new client_s3_1.DeleteObjectCommand({ Bucket: this.bucket, Key: `${projectId}/project-image`, }); return await this.s3.send(command); } async deleteProjectDirectory(projectId) { const listCommand = new client_s3_1.ListObjectsV2Command({ Bucket: this.bucket, Prefix: `${projectId}/`, }); const listedObjects = await this.s3.send(listCommand); if (!listedObjects.Contents || listedObjects.Contents.length === 0) { return; } const deleteParams = { Bucket: this.bucket, Delete: { Objects: listedObjects.Contents.map(({ Key }) => ({ Key })) }, }; const deleteCommand = new client_s3_1.DeleteObjectCommand(deleteParams); return await this.s3.send(deleteCommand); } async getPresignedUrl(contentType, projectId) { const command = new client_s3_1.PutObjectCommand({ Bucket: this.bucket, Key: `${projectId}/${Date.now()}`, ContentType: contentType, }); return await (0, s3_request_presigner_1.getSignedUrl)(this.s3, command, { expiresIn: 3600 }); } async getPresignedProjectImageUrl(projectId) { const key = `${projectId}/project-image`; const command = new client_s3_1.PutObjectCommand({ Bucket: this.bucket, Key: key, ContentType: 'image/jpeg', }); const url = await (0, s3_request_presigner_1.getSignedUrl)(this.s3, command, { expiresIn: 3600 }); const publicUrl = `https://${this.bucket}.s3.amazonaws.com/${key}`; return { url, publicUrl }; } } exports.S3Adapter = S3Adapter;