@energyweb/node-red-contrib-energywebx
Version:
Turn your flows to become SmartFlows in-order to be able to have your node-red flows being installed and executed on thousands of decentralised worker nodes around the world (Powered by Energy Web X)
61 lines (50 loc) • 1.97 kB
JavaScript
module.exports = function(RED) {
const rp = require('request-promise');
function NodeConstructor(config) {
RED.nodes.createNode(this, config);
var node = this;
node.on('input', function (msg, send, done) {
if (!msg.payload.result || !msg.payload.votingRoundID) node.error("Message payload is invalid");
else if (msg.payload.result.length > 64 || typeof msg.payload.result !== 'string') node.error("Invalid result");
else if (msg.payload.votingRoundID.length > 32 || typeof msg.payload.votingRoundID !== 'string') node.error("Invalid votingRoundID");
const requestPayload = {
noderedId: config.z,
root: msg.payload.result,
id: msg.payload.votingRoundID,
};
console.log(requestPayload);
const opts = {
method: 'POST',
url: 'http://localhost:3002/sse/1',
headers: {
'User-Agent': 'ewx-marketplace'
},
json: true,
body: requestPayload,
};
rp(opts).then((result) => {
console.log("result submitted:", result);
send({
payload: {
... requestPayload,
success: true,
}
});
done();
}).catch((err) => {
console.error("error while submitting result:", err);
send({
payload: {
... requestPayload,
success: false,
}
});
done();
});
});
node.on("close", function() {
node.status({ fill: "gray", shape: "dot", text: "closing" });
});
};
RED.nodes.registerType("submit-result", NodeConstructor);
}