From 475d9e110e15a5eb31a3a070567fd59a3f59e619 Mon Sep 17 00:00:00 2001 From: Anna Thomas Date: Mon, 8 Dec 2014 16:26:54 +0000 Subject: [PATCH] Updated to match cli changes --- red/api/nodes.js | 88 +++++++++++++++++++++++++++++++++---------- red/nodes/index.js | 1 + red/nodes/registry.js | 5 ++- 3 files changed, 73 insertions(+), 21 deletions(-) diff --git a/red/api/nodes.js b/red/api/nodes.js index eb32b4078..fe9b19ac1 100644 --- a/red/api/nodes.js +++ b/red/api/nodes.js @@ -97,6 +97,9 @@ module.exports = { var result = null; if (req.get("accept") === "application/json") { result = redNodes.getNodeInfo(id); + if (result) { + result.version = redNodes.getModuleVersion(req.params.mod); + } } else { result = redNodes.getNodeConfig(id); } @@ -113,7 +116,13 @@ module.exports = { if (result) { res.send(result); } else { - res.send(404); + // check if module is actually a node-set + var matching = getMatchingNodes(module); + if (matching.length > 0) { + res.json(matching); + } else { + res.send(404); + } } }, @@ -128,7 +137,7 @@ module.exports = { return; } try { - var id = req.params.mod+"/"+req.params.set; + var id = req.params.mod + "/" + req.params.set; var node = redNodes.getNodeInfo(id); var info; if (!node) { @@ -136,22 +145,7 @@ module.exports = { } else if (!node.err && node.enabled === body.enabled) { res.json(node); } else { - if (body.enabled) { - info = redNodes.enableNode(id); - } else { - info = redNodes.disableNode(id); - } - if (info.enabled == body.enabled && !info.err) { - comms.publish("node/"+(body.enabled?"enabled":"disabled"),info,false); - util.log("[red] "+(body.enabled?"Enabled":"Disabled")+" node types:"); - for (var i=0;i 1) { + // Multiple matches, need clarification + result = { + multipleMatches: true, + matches: matching + }; + res.json(result); + return; + } else { + // Doesn't exist + res.send(404); + return; + } } + var nodes = module.nodes; for (var i = 0; i < nodes.length; ++i) { var node = nodes[i]; @@ -203,3 +214,40 @@ module.exports = { } } }; + +function getMatchingNodes(node) { + var nodes = redNodes.getNodeList(); + var matching = []; + + nodes.forEach(function(n) { + if (n.name === node) { + n.version = redNodes.getModuleVersion(n.module); + matching.push(n); + } + }); + + return matching; +} + +function putNode(id, enabled) { + var info; + + if (enabled) { + info = redNodes.enableNode(id); + } else { + info = redNodes.disableNode(id); + } + + if (info.enabled === enabled && !info.err) { + comms.publish("node/"+(enabled?"enabled":"disabled"),info,false); + util.log("[red] "+(enabled?"Enabled":"Disabled")+" node types:"); + for (var i=0;i