uspring
Version:
A very fast Webserver which has interface like springboot
72 lines (71 loc) • 2.25 kB
JavaScript
;
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);
});
}