import { CreateBucketCommand, GetObjectCommand, S3Client } from "@aws-sdk/client-s3"; import { createPresignedPost as createPresignedPostSdk } from "@aws-sdk/s3-presigned-post"; const s3 = new S3Client({ region: "eu-central-1", endpoint: "http://localhost:9000", forcePathStyle: true, credentials: { accessKeyId: "demo", secretAccessKey: "demodemodemodemo", }, }); export async function initService() { try { await s3.send(new CreateBucketCommand({ Bucket: "exploit-demo" })); } catch (e) { if (e.Code !== "BucketAlreadyOwnedByYou") { throw e; } } } export async function createPresignedPost(key, conditions) { return createPresignedPostSdk(s3, { Bucket: "exploit-demo", Key: key, Fields: { "Content-Type": "text/plain", }, Conditions: conditions, Expires: 60, }); } export async function getKeyBuffer(key) { const res = await s3.send(new GetObjectCommand({ Bucket: "exploit-demo", Key: key, })); return [Buffer.concat(await Array.fromAsync(res.Body)), res.ContentType]; }