diff options
| author | Jan Tuomi <jans.tuomi@gmail.com> | 2022-02-06 22:52:58 +0200 |
|---|---|---|
| committer | Jan Tuomi <jans.tuomi@gmail.com> | 2022-02-06 22:52:58 +0200 |
| commit | d8773f844a6698bb11d947847733d7b314f3abfd (patch) | |
| tree | 2769165a6b12b0a50c1aef7456d6e800660355c4 /src | |
| parent | 5dfbbf191c24fc88c2677a03f66c2777484a6400 (diff) | |
Add common types
Diffstat (limited to 'src')
| -rw-r--r-- | src/index.ts | 27 |
1 files changed, 20 insertions, 7 deletions
diff --git a/src/index.ts b/src/index.ts index 68cdadf..8e90fbe 100644 --- a/src/index.ts +++ b/src/index.ts @@ -5,6 +5,7 @@ import { promisify } from "util" import { exec as cb_exec } from "child_process" import tmp from "tmp" import fs from "fs" +import { RunnerApiSubmitRequest, RunnerApiSubmitResponse } from "slam-types" const exec = promisify(cb_exec) const app = new App() @@ -12,23 +13,35 @@ const app = new App() const PORT = Number(process.env.PORT) || 3000 console.log(`Serving API on port ${PORT}`) +const interpretFile = async (sourceFile: string) => { + const cmd = `./interpreter ${sourceFile}` + try { + const result = await exec(cmd) + return result.stdout + } catch (err) { + console.error(err) + return err.stdout // the interpreter only outputs to stdout + } +} + app .use(logger({ timestamp: { format: "YYYY-MM-DDTHH:mm:ssZ" }, })) .use(json()) - .post("/submit", async (req, res) => { - if (!req.body || !req.body.source) { + .post(RunnerApiSubmitRequest.path, async (req, res) => { + const body: RunnerApiSubmitRequest.Body | undefined = req.body + if (!body || !body.source) { return res.sendStatus(400) } - const { name: sourceFile } = tmp.fileSync() - fs.writeFileSync(sourceFile, req.body.source) + const { name: sourceFile } = tmp.fileSync() as { name: string } + fs.writeFileSync(sourceFile, body.source) - const cmd = `./interpreter ${sourceFile}` - const result = await exec(cmd) + const result = await interpretFile(sourceFile) fs.rmSync(sourceFile) - res.send({ result }) + const response: RunnerApiSubmitResponse.Body = { result } + res.send(response) }) .listen(PORT) |
