node-red-contrib-motechat
Version:
ultranet topic and payload communication
57 lines (43 loc) • 1.33 kB
JavaScript
module.exports = function(RED){
"use strict"
let caller = {
call: require('../lib/mcClient.js').call
}
let getDDN = require('../lib/mcClient.js').getDDN
function ObjectStorage(config){
RED.nodes.createNode(this, config)
var node = this
node.on('input', (msg, send, done) => {
try{
send = send || function() { node.send.apply(node, arguments) }
let DDN = ">svc/objc";
let func = config.func
let name = config.name;
let type = config.types;
let timeout = {"t1":6,"t2":15}
if (!name) {
throw 'name should not be empty !!!'
}
if (!func) {
throw 'func should not be empty !!!'
}
let params = {
type: type
}
let payload = {...params, ...msg.payload}
caller.call('', DDN, func, timeout, payload).then(reply => {
let newMsg = Object.assign(msg, {
hostDDN: getDDN(),
name: name,
payload: reply
})
send([newMsg, null])
}).catch(err => send([null, err]))
.finally(() => { if (done) done() })
}catch(err){
send([null, err])
}
})
}
RED.nodes.registerType("object", ObjectStorage)
}