Skip to content

Commit 66598a6

Browse files
author
Dave Conway-Jones
committed
Merge pull request #29 from henols/master
Emoncms update gui hidden API key
2 parents f643582 + 84f5d75 commit 66598a6

File tree

2 files changed

+77
-11
lines changed

2 files changed

+77
-11
lines changed

io/emoncms/88-emoncms.html

Lines changed: 34 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -24,20 +24,21 @@
2424
<input type="text" id="node-input-topic" placeholder="">
2525
</div>
2626
<div class="form-row">
27-
<label for="node-input-name"><i class="icon-tag"></i> Name</label>
28-
<input type="text" id="node-input-name" placeholder="Emoncms">
27+
<label for="node-input-nodegroup"><i class="icon-tag"></i> Node Group</label>
28+
<input type="text" id="node-input-nodegroup" placeholder="">
2929
</div>
3030
<div class="form-row">
31-
<label for="node-input-nodegroup"><i class="icon-tag"></i> Node</label>
32-
<input type="text" id="node-input-nodegroup" placeholder="">
31+
<label for="node-input-name"><i class="icon-tag"></i> Name</label>
32+
<input type="text" id="node-input-name" placeholder="Emoncms">
3333
</div>
34-
<div class="form-tips">If Topic is left blank the output Topic is the same as the input Topic.</div>
34+
<div class="form-tips">Topic is not mandatory, if Topic is left blank <b>msg.topic</b> will used. Topic overrides <b>msg.topic</b></br>
35+
Node Group (numeric) is not mandatory, if Node Group is left blank <b>msg.nodegrpup</b> will used. Node Group overrides <b>msg.nodegroup</b></div>
3536
</script>
3637

3738
<script type="text/x-red" data-help-name="emoncms">
3839
<p>Performs post to Emoncms.</p>
39-
<p>The Topic is not mandatory, if Topic is left blank <b>msg.topic</b> will used.</p>
40-
<p>The Node is not mandatory, (numberic)</p>
40+
<p>Topic is not mandatory, if Topic is left blank <b>msg.topic</b> will used. Topic overrides <b>msg.topic</b></p>
41+
<p>Node Group (numeric) is not mandatory, if Node Group is left blank <b>msg.nodegrpup</b> will used. Node overrides <b>msg.nodegrpup</b></p>
4142
</script>
4243

4344
<script type="text/javascript">
@@ -84,11 +85,36 @@
8485
category: 'config',
8586
defaults: {
8687
server: {value:"http://localhost",required:true},
87-
apikey: {value:"",required:true},
88+
// apikey: {value:"",required:true},
8889
name: {value:""}
8990
},
9091
label: function() {
9192
return this.name||this.server;
93+
},
94+
oneditprepare: function() {
95+
$.getJSON('emoncms-server/'+this.id,function(data) {
96+
if (data.apikey) {
97+
$('#node-config-input-apikey').val(data.apikey);
98+
}
99+
});
100+
},
101+
oneditsave: function() {
102+
var newApikey = $('#node-config-input-apikey').val();
103+
var credentials = {};
104+
credentials.apikey = newApikey;
105+
$.ajax({
106+
url: 'emoncms-server/'+this.id,
107+
type: 'POST',
108+
data: credentials,
109+
success:function(result){}
110+
});
111+
},
112+
ondelete: function() {
113+
$.ajax({
114+
url: 'emoncms-server/'+this.id,
115+
type: 'DELETE',
116+
success: function(result) {}
117+
});
92118
}
93119
});
94120
</script>

io/emoncms/88-emoncms.js

Lines changed: 43 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,50 @@ var RED = require(process.env.NODE_RED_HOME+"/red/red");
1919
function EmoncmsServerNode(n) {
2020
RED.nodes.createNode(this,n);
2121
this.server = n.server;
22-
this.apikey = n.apikey;
2322
this.name = n.name;
23+
var credentials = RED.nodes.getCredentials(n.id);
24+
if (credentials) {
25+
this.apikey = credentials.apikey;
26+
}
27+
2428
}
2529
RED.nodes.registerType("emoncms-server",EmoncmsServerNode);
2630

31+
var querystring = require('querystring');
32+
33+
RED.app.get('/emoncms-server/:id',function(req,res) {
34+
var credentials = RED.nodes.getCredentials(req.params.id);
35+
if (credentials) {
36+
res.send(JSON.stringify({apikey:credentials.apikey}));
37+
} else {
38+
res.send(JSON.stringify({}));
39+
}
40+
});
41+
42+
RED.app.delete('/emoncms-server/:id',function(req,res) {
43+
RED.nodes.deleteCredentials(req.params.id);
44+
res.send(200);
45+
});
46+
47+
RED.app.post('/emoncms-server/:id',function(req,res) {
48+
49+
var body = "";
50+
req.on('data', function(chunk) {
51+
body+=chunk;
52+
});
53+
req.on('end', function(){
54+
var newCreds = querystring.parse(body);
55+
var credentials = RED.nodes.getCredentials(req.params.id)||{};
56+
if (newCreds.apikey == null || newCreds.apikey == "") {
57+
delete credentials.apikey;
58+
} else {
59+
credentials.apikey = newCreds.apikey;
60+
}
61+
RED.nodes.addCredentials(req.params.id,credentials);
62+
res.send(200);
63+
});
64+
});
65+
2766
function Emoncms(n) {
2867
RED.nodes.createNode(this,n);
2968
this.emonServer = n.emonServer;
@@ -40,9 +79,10 @@ function Emoncms(n) {
4079
this.on("input", function(msg) {
4180

4281
var topic = this.topic || msg.topic;
82+
var nodegroup = this.nodegroup || msg.nodegroup;
4383
this.url = this.baseurl + '/input/post.json?json={' + topic + ':' + msg.payload+'}&apikey='+this.apikey;
44-
if(this.nodegroup != ""){
45-
this.url += '&node='+this.nodegroup;
84+
if(nodegroup != ""){
85+
this.url += '&node='+nodegroup;
4686
}
4787
node.log("[emoncms] "+this.url);
4888
http.get(this.url, function(res) {

0 commit comments

Comments
 (0)