aiPptExportSink.mjs 1.0 KB

123456789101112131415161718192021222324252627282930
  1. import { createServer } from "node:http"
  2. import { mkdir, writeFile } from "node:fs/promises"
  3. import { dirname, resolve } from "node:path"
  4. const output = resolve(process.argv[2] || "artifacts/ai-ppt-export-test/ai-ppt-e2e.pptx")
  5. const server = createServer((request, response) => {
  6. response.setHeader("Access-Control-Allow-Origin", "*")
  7. response.setHeader("Access-Control-Allow-Methods", "POST, OPTIONS")
  8. if (request.method === "OPTIONS") {
  9. response.writeHead(204).end()
  10. return
  11. }
  12. if (request.method !== "POST" || request.url !== "/pptx") {
  13. response.writeHead(404).end()
  14. return
  15. }
  16. const chunks = []
  17. request.on("data", chunk => chunks.push(chunk))
  18. request.on("end", async () => {
  19. const buffer = Buffer.concat(chunks)
  20. await mkdir(dirname(output), { recursive: true })
  21. await writeFile(output, buffer)
  22. response.writeHead(200).end("saved")
  23. console.log(JSON.stringify({ output, bytes: buffer.length }))
  24. server.close()
  25. })
  26. })
  27. server.listen(9540, "127.0.0.1", () => console.log("AI PPT export sink listening on 9540"))