-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsubmit-solution.js
61 lines (50 loc) · 1.92 KB
/
submit-solution.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
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);
}