From bab7929215b3d5a1d66b43ee5b03ad767aa32374 Mon Sep 17 00:00:00 2001 From: Scott Lawrence Date: Wed, 19 Mar 2025 21:23:32 -0600 Subject: Initial commit --- claude-julia/server.ts | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 claude-julia/server.ts (limited to 'claude-julia/server.ts') diff --git a/claude-julia/server.ts b/claude-julia/server.ts new file mode 100644 index 0000000..09c3fb4 --- /dev/null +++ b/claude-julia/server.ts @@ -0,0 +1,64 @@ +import * as http from "http"; +import * as fs from "fs"; + +import { query } from "./query"; + +const hostname = "localhost"; +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, () => {}); + -- cgit v1.2.3-54-g00ecf