mirror of
https://github.com/BetterCorp/BetterFrame.git
synced 2026-05-26 21:26:33 +00:00
26 lines
830 B
JavaScript
26 lines
830 B
JavaScript
|
|
/**
|
||
|
|
* Tiny JSON body reader for trigger nodes.
|
||
|
|
*
|
||
|
|
* RED.httpNode.post(path, handler) registers a raw Express route with no
|
||
|
|
* body parser, so req.body is undefined. Trigger nodes call readJsonBody(req)
|
||
|
|
* to get a parsed object (or {} on error / non-JSON).
|
||
|
|
*
|
||
|
|
* Zero dependencies — avoids relying on Node-RED's bundled body-parser being
|
||
|
|
* resolvable from our nodesDir.
|
||
|
|
*/
|
||
|
|
function readJsonBody(req) {
|
||
|
|
return new Promise((resolve) => {
|
||
|
|
if (req.body && typeof req.body === "object") return resolve(req.body);
|
||
|
|
let data = "";
|
||
|
|
req.setEncoding("utf8");
|
||
|
|
req.on("data", (c) => { data += c; });
|
||
|
|
req.on("end", () => {
|
||
|
|
if (!data) return resolve({});
|
||
|
|
try { resolve(JSON.parse(data)); } catch { resolve({}); }
|
||
|
|
});
|
||
|
|
req.on("error", () => resolve({}));
|
||
|
|
});
|
||
|
|
}
|
||
|
|
|
||
|
|
module.exports = { readJsonBody };
|