const { S3Client, DeleteObjectCommand } = require('@aws-sdk/client-s3'); const { Upload } = require('@aws-sdk/lib-storage'); const BUCKET = 'snakkimo'; const ENDPOINT = 'https://fsn1.your-objectstorage.com'; const PUBLIC_BASE = `https://${BUCKET}.fsn1.your-objectstorage.com`; const client = new S3Client({ region: 'fsn1', endpoint: ENDPOINT, credentials: { accessKeyId: process.env.S3_ACCESS_KEY, secretAccessKey: process.env.S3_SECRET_KEY, }, forcePathStyle: false, }); async function uploadFile(key, buffer, mimetype) { const upload = new Upload({ client, params: { Bucket: BUCKET, Key: key, Body: buffer, ContentType: mimetype, ACL: 'public-read', }, }); await upload.done(); return `${PUBLIC_BASE}/${key}`; } async function deleteFile(key) { await client.send(new DeleteObjectCommand({ Bucket: BUCKET, Key: key })); } function keyFromUrl(url) { if (!url) return null; return url.replace(`${PUBLIC_BASE}/`, ''); } module.exports = { uploadFile, deleteFile, keyFromUrl };