import { GetObjectCommand } from "@aws-sdk/client-s3"
import { s3 } from "./s3"
import { secrets } from "./secrets"

export const streamToBuffer = async (stream: any): Promise<Buffer> => {
    const chunks: Buffer[] = []

    for await (const chunk of stream) {
        chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk))
    }

    return Buffer.concat(chunks)
}

export const loadFileBuffer = async (path: string): Promise<Buffer> => {
    const response = await s3.send(new GetObjectCommand({
        Bucket: secrets.S3_BUCKET,
        Key: path,
    }))

    if (!response.Body) {
        throw new Error(`S3-Datei '${path}' enthält keinen lesbaren Inhalt.`)
    }

    return streamToBuffer(response.Body)
}
