UNPKG

godprotocol

Version:
93 lines (75 loc) 2.71 kB
import https from "https"; import http from "http"; let PORT = Number(process.env.PORT) || 1408; const handle_routes = (req, res, manager, app) => { let data = ""; res.setHeader("Access-Control-Allow-Origin", "*"); res.setHeader("Access-Control-Allow-Headers", "Content-Type"); if (req.method === "OPTIONS") { res.writeHead(204, { "Access-Control-Allow-Origin": "*", "Access-Control-Allow-Headers": "Content-Type", "Access-Control-Allow-Methods": "POST, GET, OPTIONS", }); res.end(); return; } if (['/create_account', '/load', '/run', '/parse'].includes(req.url)){ req.on("data", (chunk) => { data += chunk; }); req.on("end", async () => { if (!data) { res.writeHead(400, { "Content-Type": "application/json" }); res.end(JSON.stringify({ error: "Request body cannot be empty" })); return; } data = JSON.parse(data) let result; if (req.url === '/create_account'){ result = await manager.add_account(data.name, data.options) res.end(JSON.stringify(result.stringify())) }else if(req.url === '/load'){ let account = await manager.get_account(data.account); result = await account.load(data) res.end(JSON.stringify(result)) }else if(req.url === '/run'){ let account = await manager.get_account(data.account); result = await account.run(data) res.writeHead(200, { "Content-type": "application/json" }); res.end(result? JSON.stringify(result): JSON.stringify({done: true})) }else if(req.url === '/parse'){ let account = await manager.get_account(data.account); result = await account.parse(data) res.end(result? JSON.stringify(result): JSON.stringify({done: true})) } }); req.on("error", (e) => { res.writeHead(500, { "Content-Type": "application/json" }); res.end(JSON.stringify({ status: "error", error_message: e.message })); }); }else if (app){ app(req, res); } }; const create_server = async (settings) => { return new Promise((resolve, reject) => { settings = settings || {}; let { port, app, manager } = settings; port = port || PORT; // console.log(__dirname) let server = http.createServer( // { // key: fs.readFileSync(`${__dirname}/server.key`), // cert: fs.readFileSync(`${__dirname}/server.cert`), // }, (req, res) => handle_routes(req, res, manager, app) ); server.listen(port, () => { console.log(`\n...GOD PROTOCOL RUNNING :${port}`); resolve(server); }); }); }; export default create_server; export { PORT };