diff --git a/io/emoncms/88-emoncms.html b/io/emoncms/88-emoncms.html index b179b7af..900ad490 100644 --- a/io/emoncms/88-emoncms.html +++ b/io/emoncms/88-emoncms.html @@ -85,11 +85,36 @@ category: 'config', defaults: { server: {value:"http://localhost",required:true}, - apikey: {value:"",required:true}, + // apikey: {value:"",required:true}, name: {value:""} }, label: function() { return this.name||this.server; + }, + oneditprepare: function() { + $.getJSON('emoncms-server/'+this.id,function(data) { + if (data.apikey) { + $('#node-config-input-apikey').val(data.apikey); + } + }); + }, + oneditsave: function() { + var newApikey = $('#node-config-input-apikey').val(); + var credentials = {}; + credentials.apikey = newApikey; + $.ajax({ + url: 'emoncms-server/'+this.id, + type: 'POST', + data: credentials, + success:function(result){} + }); + }, + ondelete: function() { + $.ajax({ + url: 'emoncms-server/'+this.id, + type: 'DELETE', + success: function(result) {} + }); } }); diff --git a/io/emoncms/88-emoncms.js b/io/emoncms/88-emoncms.js index a007d3d5..74ad43a4 100644 --- a/io/emoncms/88-emoncms.js +++ b/io/emoncms/88-emoncms.js @@ -19,11 +19,50 @@ var RED = require(process.env.NODE_RED_HOME+"/red/red"); function EmoncmsServerNode(n) { RED.nodes.createNode(this,n); this.server = n.server; - this.apikey = n.apikey; this.name = n.name; + var credentials = RED.nodes.getCredentials(n.id); + if (credentials) { + this.apikey = credentials.apikey; + } + } RED.nodes.registerType("emoncms-server",EmoncmsServerNode); +var querystring = require('querystring'); + +RED.app.get('/emoncms-server/:id',function(req,res) { + var credentials = RED.nodes.getCredentials(req.params.id); + if (credentials) { + res.send(JSON.stringify({apikey:credentials.apikey})); + } else { + res.send(JSON.stringify({})); + } +}); + +RED.app.delete('/emoncms-server/:id',function(req,res) { + RED.nodes.deleteCredentials(req.params.id); + res.send(200); +}); + +RED.app.post('/emoncms-server/:id',function(req,res) { + + var body = ""; + req.on('data', function(chunk) { + body+=chunk; + }); + req.on('end', function(){ + var newCreds = querystring.parse(body); + var credentials = RED.nodes.getCredentials(req.params.id)||{}; + if (newCreds.apikey == null || newCreds.apikey == "") { + delete credentials.apikey; + } else { + credentials.apikey = newCreds.apikey; + } + RED.nodes.addCredentials(req.params.id,credentials); + res.send(200); + }); +}); + function Emoncms(n) { RED.nodes.createNode(this,n); this.emonServer = n.emonServer;