diff --git a/social/nma/57-nma.js b/social/nma/57-nma.js index 2c1e517e..00f8ad6d 100644 --- a/social/nma/57-nma.js +++ b/social/nma/57-nma.js @@ -14,68 +14,70 @@ * limitations under the License. **/ -var RED = require(process.env.NODE_RED_HOME+"/red/red"); -var nma = require('nma'); -var util = require('util'); +module.exports = function(RED) { + "use strict"; + var nma = require('nma'); + var util = require('util'); -function NMANode(n) { - RED.nodes.createNode(this,n); - this.title = n.title; - var credentials = RED.nodes.getCredentials(n.id); - if ((credentials) && (credentials.hasOwnProperty("pushkey"))) { this.pushkey = credentials.pushkey; } - else { this.error("No NMA API key set"); } - var node = this; - this.on("input",function(msg) { - var titl = this.title||msg.topic||"Node-RED"; - if (typeof(msg.payload) === 'object') { - msg.payload = JSON.stringify(msg.payload); - } - else { msg.payload = msg.payload.toString(); } - if (node.pushkey) { - try { - nma(node.pushkey, "Node-RED", titl, msg.payload, 0 ); - } catch (e) { - node.warn("NMA error: "+ e); + function NMANode(n) { + RED.nodes.createNode(this,n); + this.title = n.title; + var credentials = RED.nodes.getCredentials(n.id); + if ((credentials) && (credentials.hasOwnProperty("pushkey"))) { this.pushkey = credentials.pushkey; } + else { this.error("No NMA API key set"); } + var node = this; + this.on("input",function(msg) { + var titl = this.title||msg.topic||"Node-RED"; + if (typeof(msg.payload) === 'object') { + msg.payload = JSON.stringify(msg.payload); } - } - else { - node.warn("NMA credentials not set."); - } - }); -} - -RED.nodes.registerType("nma",NMANode); - -var querystring = require('querystring'); - -RED.httpAdmin.get('/nma/:id',function(req,res) { - var credentials = RED.nodes.getCredentials(req.params.id); - if (credentials) { - res.send(JSON.stringify({hasPassword:(credentials.pushkey&&credentials.pushkey!="")})); - } else { - res.send(JSON.stringify({})); + else { msg.payload = msg.payload.toString(); } + if (node.pushkey) { + try { + nma(node.pushkey, "Node-RED", titl, msg.payload, 0 ); + } catch (e) { + node.warn("NMA error: "+ e); + } + } + else { + node.warn("NMA credentials not set."); + } + }); } -}); -RED.httpAdmin.delete('/nma/:id',function(req,res) { - RED.nodes.deleteCredentials(req.params.id); - res.send(200); -}); + RED.nodes.registerType("nma",NMANode); -RED.httpAdmin.post('/nma/: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.pushkey == "") { - delete credentials.pushkey; + var querystring = require('querystring'); + + RED.httpAdmin.get('/nma/:id',function(req,res) { + var credentials = RED.nodes.getCredentials(req.params.id); + if (credentials) { + res.send(JSON.stringify({hasPassword:(credentials.pushkey&&credentials.pushkey!=="")})); } else { - credentials.pushkey = newCreds.pushkey||credentials.pushkey; + res.send(JSON.stringify({})); } - RED.nodes.addCredentials(req.params.id,credentials); + }); + + RED.httpAdmin.delete('/nma/:id',function(req,res) { + RED.nodes.deleteCredentials(req.params.id); res.send(200); }); -}); + + RED.httpAdmin.post('/nma/: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.pushkey === "") { + delete credentials.pushkey; + } else { + credentials.pushkey = newCreds.pushkey||credentials.pushkey; + } + RED.nodes.addCredentials(req.params.id,credentials); + res.send(200); + }); + }); +} diff --git a/social/notify/57-notify.js b/social/notify/57-notify.js index b36d6b82..764effb7 100644 --- a/social/notify/57-notify.js +++ b/social/notify/57-notify.js @@ -14,26 +14,28 @@ * limitations under the License. **/ -var RED = require(process.env.NODE_RED_HOME+"/red/red"); -var growl = require('growl'); -var imagefile = process.env.NODE_RED_HOME+"/public/node-red.png"; +module.exports = function(RED) { + "use strict"; + var growl = require('growl'); + var imagefile = process.env.NODE_RED_HOME+"/public/node-red.png"; -function NotifyNode(n) { - RED.nodes.createNode(this,n); - this.title = n.title; - var node = this; - this.on("input",function(msg) { - var titl = this.title || msg.topic; - if (typeof(msg.payload) == 'object') { - msg.payload = JSON.stringify(msg.payload); - } - if (typeof(titl) != 'undefined') { - growl(msg.payload, { title: titl, image: imagefile }); - } - else { - growl(msg.payload, { image: imagefile }); - } - }); + function NotifyNode(n) { + RED.nodes.createNode(this,n); + this.title = n.title; + var node = this; + this.on("input",function(msg) { + var titl = this.title || msg.topic; + if (typeof(msg.payload) == 'object') { + msg.payload = JSON.stringify(msg.payload); + } + if (typeof(titl) != 'undefined') { + growl(msg.payload, { title: titl, image: imagefile }); + } + else { + growl(msg.payload, { image: imagefile }); + } + }); + } + + RED.nodes.registerType("notify",NotifyNode); } - -RED.nodes.registerType("notify",NotifyNode); diff --git a/social/prowl/57-prowl.js b/social/prowl/57-prowl.js index efe9117c..184664d9 100644 --- a/social/prowl/57-prowl.js +++ b/social/prowl/57-prowl.js @@ -14,97 +14,99 @@ * limitations under the License. **/ -var RED = require(process.env.NODE_RED_HOME+"/red/red"); -var Prowl = require('node-prowl'); -var util = require('util'); +module.exports = function(RED) { + "use strict"; + var Prowl = require('node-prowl'); + var util = require('util'); -// Either add a line like this to settings.js -// prowl: {prowlkey:'My-API-KEY'}, -// or create pushkey.js in dir ABOVE node-red, it just needs to be like -// module.exports = {prowlkey:'My-API-KEY'} + // Either add a line like this to settings.js + // prowl: {prowlkey:'My-API-KEY'}, + // or create pushkey.js in dir ABOVE node-red, it just needs to be like + // module.exports = {prowlkey:'My-API-KEY'} -try { - var pushkeys = RED.settings.prowl || require(process.env.NODE_RED_HOME+"/../pushkey.js"); -} -catch(err) { } - -function ProwlNode(n) { - RED.nodes.createNode(this,n); - this.title = n.title; - this.priority = parseInt(n.priority); - if (this.priority > 2) this.priority = 2; - if (this.priority < -2) this.priority = -2; - var credentials = RED.nodes.getCredentials(n.id); - if ((credentials) && (credentials.hasOwnProperty("pushkey"))) { this.pushkey = credentials.pushkey; } - else { - if (pushkeys) { this.pushkey = pushkeys.prowlkey; } - else { this.error("No Prowl credentials set."); } + try { + var pushkeys = RED.settings.prowl || require(process.env.NODE_RED_HOME+"/../pushkey.js"); } - this.prowl = false; - if (this.pushkey) { this.prowl = new Prowl(this.pushkey); } - var node = this; + catch(err) { } - this.on("input",function(msg) { - var titl = this.title||msg.topic||"Node-RED"; - var pri = msg.priority||this.priority; - if (typeof(msg.payload) === 'object') { - msg.payload = JSON.stringify(msg.payload); + function ProwlNode(n) { + RED.nodes.createNode(this,n); + this.title = n.title; + this.priority = parseInt(n.priority); + if (this.priority > 2) { this.priority = 2; } + if (this.priority < -2) { this.priority = -2; } + var credentials = RED.nodes.getCredentials(n.id); + if ((credentials) && (credentials.hasOwnProperty("pushkey"))) { this.pushkey = credentials.pushkey; } + else { + if (pushkeys) { this.pushkey = pushkeys.prowlkey; } + else { this.error("No Prowl credentials set."); } } - else { msg.payload = msg.payload.toString(); } - if (node.pushkey) { - try { - node.prowl.push(msg.payload, titl, { priority: pri }, function(err, remaining) { - if (err) node.error(err); - node.log( remaining + ' calls to Prowl api during current hour.' ); - }); + this.prowl = false; + if (this.pushkey) { this.prowl = new Prowl(this.pushkey); } + var node = this; + + this.on("input",function(msg) { + var titl = this.title||msg.topic||"Node-RED"; + var pri = msg.priority||this.priority; + if (typeof(msg.payload) === 'object') { + msg.payload = JSON.stringify(msg.payload); } - catch (err) { - node.error(err); + else { msg.payload = msg.payload.toString(); } + if (node.pushkey) { + try { + node.prowl.push(msg.payload, titl, { priority: pri }, function(err, remaining) { + if (err) { node.error(err); } + node.log( remaining + ' calls to Prowl api during current hour.' ); + }); + } + catch (err) { + node.error(err); + } } + else { + node.warn("Prowl credentials not set."); + } + }); + } + RED.nodes.registerType("prowl",ProwlNode); + + var querystring = require('querystring'); + + RED.httpAdmin.get('/prowl/:id',function(req,res) { + var credentials = RED.nodes.getCredentials(req.params.id); + if (credentials) { + res.send(JSON.stringify({hasPassword:(credentials.pushkey&&credentials.pushkey!=="")})); + } + else if (pushkeys && pushkeys.prowlkey) { + RED.nodes.addCredentials(req.params.id,{pushkey:pushkeys.prowlkey,global:true}); + credentials = RED.nodes.getCredentials(req.params.id); + res.send(JSON.stringify({hasPassword:(credentials.pushkey&&credentials.pushkey!==""),global:credentials.global})); } else { - node.warn("Prowl credentials not set."); + res.send(JSON.stringify({})); } }); -} -RED.nodes.registerType("prowl",ProwlNode); -var querystring = require('querystring'); - -RED.httpAdmin.get('/prowl/:id',function(req,res) { - var credentials = RED.nodes.getCredentials(req.params.id); - if (credentials) { - res.send(JSON.stringify({hasPassword:(credentials.pushkey&&credentials.pushkey!="")})); - } - else if (pushkeys && pushkeys.prowlkey) { - RED.nodes.addCredentials(req.params.id,{pushkey:pushkeys.prowlkey,global:true}); - credentials = RED.nodes.getCredentials(req.params.id); - res.send(JSON.stringify({hasPassword:(credentials.pushkey&&credentials.pushkey!=""),global:credentials.global}));; - } - else { - res.send(JSON.stringify({})); - } -}); - -RED.httpAdmin.delete('/prowl/:id',function(req,res) { - RED.nodes.deleteCredentials(req.params.id); - res.send(200); -}); - -RED.httpAdmin.post('/prowl/: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.pushkey == "") { - delete credentials.pushkey; - } else { - credentials.pushkey = newCreds.pushkey||credentials.pushkey; - } - RED.nodes.addCredentials(req.params.id,credentials); + RED.httpAdmin.delete('/prowl/:id',function(req,res) { + RED.nodes.deleteCredentials(req.params.id); res.send(200); }); -}); + + RED.httpAdmin.post('/prowl/: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.pushkey === "") { + delete credentials.pushkey; + } else { + credentials.pushkey = newCreds.pushkey||credentials.pushkey; + } + RED.nodes.addCredentials(req.params.id,credentials); + res.send(200); + }); + }); +} diff --git a/social/pushbullet/57-pushbullet.js b/social/pushbullet/57-pushbullet.js index 92f497fb..d8858330 100644 --- a/social/pushbullet/57-pushbullet.js +++ b/social/pushbullet/57-pushbullet.js @@ -14,105 +14,107 @@ * limitations under the License. **/ -var RED = require(process.env.NODE_RED_HOME+"/red/red"); -var PushBullet = require('pushbullet'); -var util = require('util'); +module.exports = function(RED) { + "use strict"; + var PushBullet = require('pushbullet'); + var util = require('util'); -// Either create pushkey.js in dir ABOVE node-red, it just needs to be like -// module.exports = {pushbullet:'My-API-KEY', deviceid:'12345'} -// or set them per node in the edit dialog + // Either create pushkey.js in dir ABOVE node-red, it just needs to be like + // module.exports = {pushbullet:'My-API-KEY', deviceid:'12345'} + // or set them per node in the edit dialog -try { - var pushkeys = RED.settings.pushbullet || require(process.env.NODE_RED_HOME+"/../pushkey.js"); -} -catch(err) { - //util.log("[57-pushbullet.js] Warning: Failed to load global PushBullet credentials"); -} - -function PushbulletNode(n) { - RED.nodes.createNode(this,n); - this.title = n.title; - var credentials = RED.nodes.getCredentials(n.id); - if ((credentials) && (credentials.hasOwnProperty("pushkey"))) { this.pushkey = credentials.pushkey; } - else { - if (pushkeys) { this.pushkey = pushkeys.pushbullet; } - else { this.error("No Pushbullet API key set"); } + try { + var pushkeys = RED.settings.pushbullet || require(process.env.NODE_RED_HOME+"/../pushkey.js"); } - if ((credentials) && (credentials.hasOwnProperty("deviceid"))) { this.deviceid = credentials.deviceid; } - else { - if (pushkeys) { this.deviceid = pushkeys.deviceid; } - else { this.warn("No deviceid set"); } + catch(err) { + //util.log("[57-pushbullet.js] Warning: Failed to load global PushBullet credentials"); } - this.pusher = new PushBullet(this.pushkey); - var node = this; - this.on("input",function(msg) { - var titl = node.title||msg.topic||"Node-RED"; - var dev = msg.deviceid||node.deviceid; - if (typeof(msg.payload) === 'object') { - msg.payload = JSON.stringify(msg.payload); + function PushbulletNode(n) { + RED.nodes.createNode(this,n); + this.title = n.title; + var credentials = RED.nodes.getCredentials(n.id); + if ((credentials) && (credentials.hasOwnProperty("pushkey"))) { this.pushkey = credentials.pushkey; } + else { + if (pushkeys) { this.pushkey = pushkeys.pushbullet; } + else { this.error("No Pushbullet API key set"); } } - else { msg.payload = msg.payload.toString(); } - if (node.pushkey && dev) { - try { - if (!isNaN(dev)) { dev = Number(dev); } - node.pusher.note(dev, titl, msg.payload, function(err, response) { - if (err) node.error("Pushbullet error: "+err); - //console.log(response); - }); + if ((credentials) && (credentials.hasOwnProperty("deviceid"))) { this.deviceid = credentials.deviceid; } + else { + if (pushkeys) { this.deviceid = pushkeys.deviceid; } + else { this.warn("No deviceid set"); } + } + this.pusher = new PushBullet(this.pushkey); + var node = this; + + this.on("input",function(msg) { + var titl = node.title||msg.topic||"Node-RED"; + var dev = msg.deviceid||node.deviceid; + if (typeof(msg.payload) === 'object') { + msg.payload = JSON.stringify(msg.payload); } - catch (err) { - node.error(err); + else { msg.payload = msg.payload.toString(); } + if (node.pushkey && dev) { + try { + if (!isNaN(dev)) { dev = Number(dev); } + node.pusher.note(dev, titl, msg.payload, function(err, response) { + if (err) { node.error("Pushbullet error: "+err); } + //console.log(response); + }); + } + catch (err) { + node.error(err); + } } + else { + node.warn("Pushbullet credentials not set/found. See node info."); + } + }); + } + RED.nodes.registerType("pushbullet",PushbulletNode); + + var querystring = require('querystring'); + + RED.httpAdmin.get('/pushbullet/:id',function(req,res) { + var credentials = RED.nodes.getCredentials(req.params.id); + if (credentials) { + res.send(JSON.stringify({deviceid:credentials.deviceid,hasPassword:(credentials.pushkey&&credentials.pushkey!=="")})); + } + else if (pushkeys && pushkeys.pushbullet && pushkeys.deviceid) { + RED.nodes.addCredentials(req.params.id,{pushkey:pushkeys.pushbullet,deviceid:pushkeys.deviceid,global:true}); + credentials = RED.nodes.getCredentials(req.params.id); + res.send(JSON.stringify({deviceid:credentials.deviceid,global:credentials.global,hasPassword:(credentials.pushkey&&credentials.pushkey!=="")})); } else { - node.warn("Pushbullet credentials not set/found. See node info."); + res.send(JSON.stringify({})); } }); -} -RED.nodes.registerType("pushbullet",PushbulletNode); -var querystring = require('querystring'); - -RED.httpAdmin.get('/pushbullet/:id',function(req,res) { - var credentials = RED.nodes.getCredentials(req.params.id); - if (credentials) { - res.send(JSON.stringify({deviceid:credentials.deviceid,hasPassword:(credentials.pushkey&&credentials.pushkey!="")})); - } - else if (pushkeys && pushkeys.pushbullet && pushkeys.deviceid) { - RED.nodes.addCredentials(req.params.id,{pushkey:pushkeys.pushbullet,deviceid:pushkeys.deviceid,global:true}); - credentials = RED.nodes.getCredentials(req.params.id); - res.send(JSON.stringify({deviceid:credentials.deviceid,global:credentials.global,hasPassword:(credentials.pushkey&&credentials.pushkey!="")}));; - } - else { - res.send(JSON.stringify({})); - } -}); - -RED.httpAdmin.delete('/pushbullet/:id',function(req,res) { - RED.nodes.deleteCredentials(req.params.id); - res.send(200); -}); - -RED.httpAdmin.post('/pushbullet/: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.deviceid == null || newCreds.deviceid == "") { - delete credentials.deviceid; - } else { - credentials.deviceid = newCreds.deviceid; - } - if (newCreds.pushkey == "") { - delete credentials.pushkey; - } else { - credentials.pushkey = newCreds.pushkey||credentials.pushkey; - } - RED.nodes.addCredentials(req.params.id,credentials); + RED.httpAdmin.delete('/pushbullet/:id',function(req,res) { + RED.nodes.deleteCredentials(req.params.id); res.send(200); }); -}); + + RED.httpAdmin.post('/pushbullet/: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.deviceid === null || newCreds.deviceid === "") { + delete credentials.deviceid; + } else { + credentials.deviceid = newCreds.deviceid; + } + if (newCreds.pushkey === "") { + delete credentials.pushkey; + } else { + credentials.pushkey = newCreds.pushkey||credentials.pushkey; + } + RED.nodes.addCredentials(req.params.id,credentials); + res.send(200); + }); + }); +} diff --git a/social/pusher/114-pusher.js b/social/pusher/114-pusher.js index e9908df3..13bf5268 100644 --- a/social/pusher/114-pusher.js +++ b/social/pusher/114-pusher.js @@ -17,142 +17,141 @@ * See the License for the specific language governing permissions and * limitations under the License. **/ +module.exports = function(RED) { + "use strict"; + var Pusher = require('pusher'); + var PusherClient = require('pusher-client'); -var Pusher = require('pusher'); -var PusherClient = require('pusher-client'); + //node for subscribing to an event/channel + function PusherNode(n) { + // Create a RED node + RED.nodes.createNode(this,n); -// Require main module -var RED = require(process.env.NODE_RED_HOME+"/red/red"); + var node = this; + var credentials = RED.nodes.getCredentials(n.id); -//node for subscribing to an event/channel - function PusherNode(n) { - // Create a RED node - RED.nodes.createNode(this,n); + if ((credentials) && (credentials.hasOwnProperty("pusherappkey_sub"))) { this.appkey = credentials.pusherappkey_sub; } + else { this.error("No Pusher app key set for input node"); } - var node = this; - var credentials = RED.nodes.getCredentials(n.id); + //get parameters from user + this.channel = n.channel; + this.eventname = n.eventname; - if ((credentials) && (credentials.hasOwnProperty("pusherappkey_sub"))) { this.appkey = credentials.pusherappkey_sub; } - else { this.error("No Pusher app key set for input node"); } + //create a subscription to the channel and event defined by user + var socket = new PusherClient(''+this.appkey); + var my_channel = socket.subscribe(''+this.channel); + socket.bind(''+this.eventname, + function(data) { + var msg = {}; + if (data.hasOwnProperty("payload")) { msg.payload = data.payload; } + else { msg.payload = data; } + node.send(msg); + } + ); - //get parameters from user - this.channel = n.channel; - this.eventname = n.eventname; - - //create a subscription to the channel and event defined by user - var socket = new PusherClient(''+this.appkey); - var my_channel = socket.subscribe(''+this.channel); - socket.bind(''+this.eventname, - function(data) { - var msg = {}; - if (data.hasOwnProperty("payload")) { msg.payload = data.payload; } - else { msg.payload = data; } - node.send(msg); - } - ); - - this.on("close", function() { - socket.disconnect(); - }); -} - -//Node for sending Pusher events -function PusherNodeSend(n) { - // Create a RED node - RED.nodes.createNode(this,n); - - var node = this; - - var credentials = RED.nodes.getCredentials(n.id); - - if ((credentials) && (credentials.hasOwnProperty("pusherappid"))) { this.appid = credentials.pusherappid; } - else { this.error("No Pusher api token set"); } - if ((credentials) && (credentials.hasOwnProperty("pusherappsecret"))) { this.appsecret = credentials.pusherappsecret; } - else { this.error("No Pusher user secret set"); } - if ((credentials) && (credentials.hasOwnProperty("pusherappkey"))) { this.appkey = credentials.pusherappkey; } - else { this.error("No Pusher user key set"); } - - //get parameters from user - this.channel = n.channel; - this.eventname = n.eventname; - - var pusher = new Pusher({ - appId: this.appid, - key: this.appkey, - secret: this.appsecret - }); - - this.on("input", function(msg){ - pusher.trigger(this.channel, this.eventname, { - "payload": msg.payload + this.on("close", function() { + socket.disconnect(); }); - }); - - this.on("close", function() { - }); - } - - //debugging on the output: -var displayResult = function(result) { - node.log(result); -}; - -var displayError = function(err) { - node.log("Error: "+err); -}; - -RED.nodes.registerType("pusher in",PusherNode); -RED.nodes.registerType("pusher out",PusherNodeSend); - -var querystring = require('querystring'); - -RED.httpAdmin.get('/pusher/:id',function(req,res) { - var credentials = RED.nodes.getCredentials(req.params.id); - if (credentials) { - res.send(JSON.stringify({pusherappid:credentials.pusherappid,pusherappsecret:credentials.pusherappsecret, pusherappkey:credentials.pusherappkey, pusherappkey_sub:credentials.pusherappkey_sub})); - } else { - res.send(JSON.stringify({})); } -}); -RED.httpAdmin.delete('/pusher/:id',function(req,res) { - RED.nodes.deleteCredentials(req.params.id); - res.send(200); -}); + //Node for sending Pusher events + function PusherNodeSend(n) { + // Create a RED node + RED.nodes.createNode(this,n); -RED.httpAdmin.post('/pusher/:id',function(req,res) { - var body = ""; - req.on('data', function(chunk) { - body+=chunk; + var node = this; + + var credentials = RED.nodes.getCredentials(n.id); + + if ((credentials) && (credentials.hasOwnProperty("pusherappid"))) { this.appid = credentials.pusherappid; } + else { this.error("No Pusher api token set"); } + if ((credentials) && (credentials.hasOwnProperty("pusherappsecret"))) { this.appsecret = credentials.pusherappsecret; } + else { this.error("No Pusher user secret set"); } + if ((credentials) && (credentials.hasOwnProperty("pusherappkey"))) { this.appkey = credentials.pusherappkey; } + else { this.error("No Pusher user key set"); } + + //get parameters from user + this.channel = n.channel; + this.eventname = n.eventname; + + var pusher = new Pusher({ + appId: this.appid, + key: this.appkey, + secret: this.appsecret + }); + + this.on("input", function(msg){ + pusher.trigger(this.channel, this.eventname, { + "payload": msg.payload + }); + }); + + this.on("close", function() { + }); + } + + //debugging on the output: + var displayResult = function(result) { + node.log(result); + }; + + var displayError = function(err) { + node.log("Error: "+err); + }; + + RED.nodes.registerType("pusher in",PusherNode); + RED.nodes.registerType("pusher out",PusherNodeSend); + + var querystring = require('querystring'); + + RED.httpAdmin.get('/pusher/:id',function(req,res) { + var credentials = RED.nodes.getCredentials(req.params.id); + if (credentials) { + res.send(JSON.stringify({pusherappid:credentials.pusherappid,pusherappsecret:credentials.pusherappsecret, pusherappkey:credentials.pusherappkey, pusherappkey_sub:credentials.pusherappkey_sub})); + } else { + res.send(JSON.stringify({})); + } }); - req.on('end', function(){ - var newCreds = querystring.parse(body); - var credentials = RED.nodes.getCredentials(req.params.id)||{}; - if (newCreds.pusherappid == null || newCreds.pusherappid == "") { - delete credentials.pusherappid; - } else { - credentials.pusherappid = newCreds.pusherappid; - } - if (newCreds.pusherappkey == "") { - delete credentials.pusherappkey; - } else { - credentials.pusherappkey = newCreds.pusherappkey||credentials.pusherappkey; - } - - if (newCreds.pusherappsecret == "") { - delete credentials.pusherappsecret; - } else { - credentials.pusherappsecret = newCreds.pusherappsecret||credentials.pusherappsecret; - } - - if (newCreds.pusherappkey_sub == "") { - delete credentials.pusherappkey_sub; - } else { - credentials.pusherappkey_sub = newCreds.pusherappkey_sub||credentials.pusherappkey_sub; - } - - RED.nodes.addCredentials(req.params.id,credentials); + RED.httpAdmin.delete('/pusher/:id',function(req,res) { + RED.nodes.deleteCredentials(req.params.id); res.send(200); }); -}); + + RED.httpAdmin.post('/pusher/: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.pusherappid === null || newCreds.pusherappid === "") { + delete credentials.pusherappid; + } else { + credentials.pusherappid = newCreds.pusherappid; + } + if (newCreds.pusherappkey === "") { + delete credentials.pusherappkey; + } else { + credentials.pusherappkey = newCreds.pusherappkey||credentials.pusherappkey; + } + + if (newCreds.pusherappsecret === "") { + delete credentials.pusherappsecret; + } else { + credentials.pusherappsecret = newCreds.pusherappsecret||credentials.pusherappsecret; + } + + if (newCreds.pusherappkey_sub === "") { + delete credentials.pusherappkey_sub; + } else { + credentials.pusherappkey_sub = newCreds.pusherappkey_sub||credentials.pusherappkey_sub; + } + + RED.nodes.addCredentials(req.params.id,credentials); + res.send(200); + }); + }); +} diff --git a/social/pushover/57-pushover.js b/social/pushover/57-pushover.js index ef2543db..d309260f 100644 --- a/social/pushover/57-pushover.js +++ b/social/pushover/57-pushover.js @@ -14,97 +14,99 @@ * limitations under the License. **/ -var RED = require(process.env.NODE_RED_HOME+"/red/red"); -var PushOver = require('pushover-notifications'); -var util = require('util'); +module.exports = function(RED) { + "use strict"; + var PushOver = require('pushover-notifications'); + var util = require('util'); -function PushoverNode(n) { - RED.nodes.createNode(this,n); - this.title = n.title; - this.priority = n.priority; - var credentials = RED.nodes.getCredentials(n.id); - if ((credentials) && (credentials.hasOwnProperty("pushkey"))) { this.pushkey = credentials.pushkey; } - else { this.error("No Pushover api token set"); } - if ((credentials) && (credentials.hasOwnProperty("deviceid"))) { this.deviceid = credentials.deviceid; } - else { this.error("No Pushover user key set"); } - var pusher = false; - if (this.pushkey && this.deviceid) { - pusher = new PushOver({ - user: this.deviceid, - token: this.pushkey, - onerror: function(err) { - util.log('[57-pushover.js] Error: '+err); + function PushoverNode(n) { + RED.nodes.createNode(this,n); + this.title = n.title; + this.priority = n.priority; + var credentials = RED.nodes.getCredentials(n.id); + if ((credentials) && (credentials.hasOwnProperty("pushkey"))) { this.pushkey = credentials.pushkey; } + else { this.error("No Pushover api token set"); } + if ((credentials) && (credentials.hasOwnProperty("deviceid"))) { this.deviceid = credentials.deviceid; } + else { this.error("No Pushover user key set"); } + var pusher = false; + if (this.pushkey && this.deviceid) { + pusher = new PushOver({ + user: this.deviceid, + token: this.pushkey, + onerror: function(err) { + util.log('[57-pushover.js] Error: '+err); + } + }); + } + var node = this; + + this.on("input",function(msg) { + var titl = this.title || msg.topic || "Node-RED"; + var pri = this.priority || msg.priority || 0; + if (isNaN(pri)) {pri=0;} + if (pri > 2) {pri = 2;} + if (pri < -1) {pri = -1;} + if (typeof(msg.payload) === 'object') { + msg.payload = JSON.stringify(msg.payload); + } + else { msg.payload = msg.payload.toString(); } + if (pusher) { + var pushmsg = { + message: msg.payload, + title: titl, + priority: pri, + retry: 30, + expire: 600 + }; + //console.log("Sending",pushmsg); + pusher.send( pushmsg, function(err, response) { + if (err) { node.error("Pushover Error: "+err); } + //console.log(response); + }); + } + else { + node.warn("Pushover credentials not set."); } }); } - var node = this; + RED.nodes.registerType("pushover",PushoverNode); - this.on("input",function(msg) { - var titl = this.title || msg.topic || "Node-RED"; - var pri = this.priority || msg.priority || 0; - if (isNaN(pri)) {pri=0;} - if (pri > 2) {pri = 2;} - if (pri < -1) {pri = -1;} - if (typeof(msg.payload) === 'object') { - msg.payload = JSON.stringify(msg.payload); - } - else { msg.payload = msg.payload.toString(); } - if (pusher) { - var pushmsg = { - message: msg.payload, - title: titl, - priority: pri, - retry: 30, - expire: 600 - }; - //console.log("Sending",pushmsg); - pusher.send( pushmsg, function(err, response) { - if (err) node.error("Pushover Error: "+err); - //console.log(response); - }); - } - else { - node.warn("Pushover credentials not set."); + var querystring = require('querystring'); + + RED.httpAdmin.get('/pushover/:id',function(req,res) { + var credentials = RED.nodes.getCredentials(req.params.id); + if (credentials) { + res.send(JSON.stringify({deviceid:credentials.deviceid,hasPassword:(credentials.pushkey&&credentials.pushkey!=="")})); + } else { + res.send(JSON.stringify({})); } }); -} -RED.nodes.registerType("pushover",PushoverNode); -var querystring = require('querystring'); - -RED.httpAdmin.get('/pushover/:id',function(req,res) { - var credentials = RED.nodes.getCredentials(req.params.id); - if (credentials) { - res.send(JSON.stringify({deviceid:credentials.deviceid,hasPassword:(credentials.pushkey&&credentials.pushkey!="")})); - } else { - res.send(JSON.stringify({})); - } -}); - -RED.httpAdmin.delete('/pushover/:id',function(req,res) { - RED.nodes.deleteCredentials(req.params.id); - res.send(200); -}); - -RED.httpAdmin.post('/pushover/: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.deviceid == null || newCreds.deviceid == "") { - delete credentials.deviceid; - } else { - credentials.deviceid = newCreds.deviceid; - } - if (newCreds.pushkey == "") { - delete credentials.pushkey; - } else { - credentials.pushkey = newCreds.pushkey||credentials.pushkey; - } - RED.nodes.addCredentials(req.params.id,credentials); + RED.httpAdmin.delete('/pushover/:id',function(req,res) { + RED.nodes.deleteCredentials(req.params.id); res.send(200); }); -}); + + RED.httpAdmin.post('/pushover/: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.deviceid === null || newCreds.deviceid === "") { + delete credentials.deviceid; + } else { + credentials.deviceid = newCreds.deviceid; + } + if (newCreds.pushkey === "") { + delete credentials.pushkey; + } else { + credentials.pushkey = newCreds.pushkey||credentials.pushkey; + } + RED.nodes.addCredentials(req.params.id,credentials); + res.send(200); + }); + }); +}