UNPKG

uspring

Version:

A very fast Webserver which has interface like springboot

72 lines (71 loc) 2.25 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var buffer_1 = require("buffer"); function extendRequestP(req, res) { // parse json from middleware not from here; // can parse gRPC from middleware also; return new Promise(function (resolve) { // @ts-ignore req.url = req.getUrl(); readJson(res, req, function (err) { console.error(err); }) .then(function (newReq) { resolve(newReq); }) .catch(console.error); }); } exports.extendRequestP = extendRequestP; /* Helper function for reading a posted JSON body */ function readJson(res, req, err) { return new Promise(function (resolve) { var buffer; /* Register data cb */ res.onData(function (ab, isLast) { var chunk = buffer_1.Buffer.from(ab); if (isLast) { var json = void 0; if (buffer) { try { // @ts-ignore json = JSON.parse(buffer_1.Buffer.concat([buffer, chunk])); } catch (e) { /* res.close calls onAborted */ res.close(); return; } req.body = json; resolve(req); return; } try { if (chunk.length > 0) { // @ts-ignore json = JSON.parse(chunk); } } catch (e) { console.error(e); /* res.close calls onAborted */ res.close(); return; } req.body = json; resolve(req); } else { if (buffer) { buffer = buffer_1.Buffer.concat([buffer, chunk]); } else { buffer = buffer_1.Buffer.concat([chunk]); } } }); /* Register error cb */ // @ts-ignore res.onAborted(err); }); }