import asynchttpserver, asyncdispatch import osproc proc requestHandler(req:Request) {.async.} = if req.url.path == "/compile": let (output, exitCode) = execCmdEx("make") let headers = if exitCode == 0: newHttpHeaders([("Content-Type","application/pdf")]) else: newHttpHeaders([("Content-Type","text/plain")]) let content = if exitCode == 0: readFile("Abgabe.pdf") else: output await req.respond(Http200, content, headers) elif req.url.path == "/backup": let (output, exitCode) = execCmdEx("make backup") let headers = newHttpHeaders([("Content-Type","text/plain")]) let content = if exitCode == 0: "Backup succeded" else: output await req.respond(Http200, content, headers) else: await req.respond(Http404, "Not a valid API call") when isMainModule: var server = newAsyncHttpServer() waitFor server.serve(Port(8080), requestHandler)