From 37d5f09c2a7a335f5111663edea95f053eaa08b0 Mon Sep 17 00:00:00 2001 From: Jan Tuomi Date: Sun, 6 Feb 2022 20:10:31 +0200 Subject: Initial commit --- src/index.ts | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 src/index.ts (limited to 'src') diff --git a/src/index.ts b/src/index.ts new file mode 100644 index 0000000..68cdadf --- /dev/null +++ b/src/index.ts @@ -0,0 +1,34 @@ +import { App } from "@tinyhttp/app" +import { logger } from "@tinyhttp/logger" +import { json } from "milliparsec" +import { promisify } from "util" +import { exec as cb_exec } from "child_process" +import tmp from "tmp" +import fs from "fs" + +const exec = promisify(cb_exec) +const app = new App() + +const PORT = Number(process.env.PORT) || 3000 +console.log(`Serving API on port ${PORT}`) + +app + .use(logger({ + timestamp: { format: "YYYY-MM-DDTHH:mm:ssZ" }, + })) + .use(json()) + .post("/submit", async (req, res) => { + if (!req.body || !req.body.source) { + return res.sendStatus(400) + } + + const { name: sourceFile } = tmp.fileSync() + fs.writeFileSync(sourceFile, req.body.source) + + const cmd = `./interpreter ${sourceFile}` + const result = await exec(cmd) + fs.rmSync(sourceFile) + + res.send({ result }) + }) + .listen(PORT) -- cgit v1.3