27 lines
727 B
TypeScript
27 lines
727 B
TypeScript
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)
|
|
}
|