import * as http from "http"; import * as fs from "fs"; import { query } from "./query"; const hostname = ""; const port = 3000; function readFiles(l: Array) { let m = new Map(); for (const fn of l) { m.set(fn, fs.readFileSync(fn)); } return m; } const files: Map = readFiles(["index.html", "style.css", "client.js"]); async function readBody(req: http.IncomingMessage): Promise { return new Promise((resolve, reject) => { let chunks: Buffer[] = []; req.on('data', (chunk: Buffer) => { chunks.push(chunk); }); req.on('end', () => { resolve(Buffer.concat(chunks).toString()); }); }); } const server = http.createServer(async (req: http.IncomingMessage,res) => { switch (req.url) { case "/": res.statusCode = 200; res.end(files.get("index.html")); break; case "/style.css": res.statusCode = 200; res.end(files.get("style.css")); break; case "/client.js": res.statusCode = 200; res.end(files.get("client.js")); break; case "/query": if (req.method !== 'POST') { res.statusCode = 405; res.end('Must use POST'); return; } res.statusCode = 200; let body = await readBody(req); let response = await query(body); res.end(response); break; default: res.statusCode = 404; res.setHeader('Content-Type', 'text/html'); res.end('Not found!'); } }); server.listen(port, hostname, () => {});