Comparing version 0.1.6 to 0.2.1beta
@@ -27,6 +27,2 @@ /** | ||
var rest = require("restler"); | ||
var xml2js = require("xml2js-expat"); | ||
var connect = require('connect'); | ||
Array.prototype.contains = function(obj) { | ||
@@ -42,141 +38,24 @@ var i = this.length; | ||
exports.load = function(host, appId, pass) { | ||
return new Appzone(host, appId, pass); | ||
/** | ||
* Returns an instance of Appzone Sender | ||
* | ||
* @param url - url of the Appzone Server eg:- http://localhost:8000 | ||
* @param appId - appId for appzone | ||
* @param password - password for appzone | ||
* @param retryInterval (optional) - the Interval between retry message sending | ||
* if a message failed to send correctly. Default is 30 seconds. | ||
* @param retryLimit (optional)- no retries before give up sending the message. | ||
* Default is 5 | ||
*/ | ||
exports.sender = function(url, appId, password, retryInterval, retryLimit) { | ||
return require('./sender').load(url, appId, password, retryInterval, retryLimit); | ||
}; | ||
function Appzone(host, appId, pass) { | ||
this.sendMessage = function(address, message, callback, retry) { | ||
var tries = 0; | ||
if(retry) { | ||
sendMessageRetry("tel:" + address, message, callback, 1); | ||
} else { | ||
sendMessage_("tel:" + address, message, callback); | ||
} | ||
}; | ||
this.broadcast = function(message, callback, retry) { | ||
if(retry) { | ||
sendMessageRetry("list:registered", message, callback, 1); | ||
} else { | ||
sendMessage_("list:registered", message, callback); | ||
} | ||
}; | ||
var sendMessageRetry = function(address, message, callback, count) { | ||
var retryCodes = ["SBL-SMS-MT-5000", "SBL-SMS-MT-5008", "SBL-SMS-MT-5001", | ||
"SBL-SMS-MT-5004", "CORE-SMS-MT-4049", "CORE-SMS-MT-4030", | ||
"CORE-SMS-MT-4016"]; | ||
if(count> 5) { | ||
console.error("maximum retry limit exeeded when sending message to: " + host + " for:" + address); | ||
} else { | ||
sendMessage_(address, message, function(status) { | ||
if(!status || retryCodes.contains(status.status_code)) { | ||
console.log("retrying for: " + count + " of message: " + message + " to address:" + address); | ||
setTimeout(function() { | ||
sendMessageRetry(address, message, callback, count + 1); | ||
}, 30000); | ||
} else { | ||
if(callback) callback(status); | ||
} | ||
}); | ||
} | ||
}; | ||
var sendMessage_ = function(address, message, callback) { | ||
rest.post(host, { | ||
username: appId, | ||
password: pass, | ||
data: { | ||
version: "1.0", | ||
address: address, | ||
message: message | ||
} | ||
}).on("complete", function(data, response) { | ||
if(response.statusCode == 200) { | ||
var pasedData = parseXML(data, function(status) { | ||
if(callback) callback(status); | ||
}); | ||
console.info("message send to address: " + address); | ||
} else { | ||
console.error("Appzone Sending message failed with statusCode: " + response.statusCode); | ||
if(callback) callback(null); | ||
} | ||
}).on("error", function(err) { | ||
console.error("Something wrong with the appzone host:" + host); | ||
}); | ||
}; | ||
var parseXML = function(data, callback) { | ||
var p = new xml2js.Parser(); | ||
p.addListener("end", function(obj) { | ||
callback(obj); | ||
}); | ||
p.parseString(data); | ||
}; | ||
/** | ||
* Receive for SMS on a given port and calls the callback with following object | ||
* { | ||
* version: "1.0", | ||
* address: "2324324243234", | ||
* message: "the message content", | ||
* correlator: "34343434343" | ||
* } | ||
*/ | ||
this.receive = function(port, callback) { | ||
var app = connect.createServer( | ||
connect.bodyParser(), | ||
receiveLogic | ||
).listen(port); | ||
function receiveLogic(req, res) { | ||
if(req.method.toUpperCase() == "POST") { | ||
var message = { | ||
version: req.body.version, | ||
address: req.body.address, | ||
message: req.body.message, | ||
correlator: req.body.correlator | ||
}; | ||
if(requestCheck(message)) { | ||
console.info("receiving SMS from appzone: " + JSON.stringify(message)); | ||
callback(message); | ||
res.writeHead(200, {"Content-Type": "text/plain"}); | ||
res.end(""); | ||
} else { | ||
console.info("few of required parameters are not exists. current requets: " + JSON.stringify(message)); | ||
res.writeHead(404, {"Content-Type": "text/plain"}); | ||
res.end("Please provide all the required paramerers"); | ||
} | ||
} else { | ||
console.info("unsupported method: " + req.method + " received"); | ||
res.writeHead(404, {"Content-Type": "text/plain"}); | ||
res.end("Please provide all the required paramerers"); | ||
} | ||
} | ||
/** | ||
* Check the request for all the required parameters | ||
*/ | ||
function requestCheck(message) { | ||
for(key in message) { | ||
if(!message[key]) { | ||
return false; | ||
} | ||
} | ||
return true; | ||
} | ||
}; | ||
} | ||
/** | ||
* Returns an instance of Appzone Receiver | ||
* | ||
* @param port - port which listen for messages from Appzone | ||
*/ | ||
exports.receiver = function(port) { | ||
return require('./receiver').load(port); | ||
}; |
{ | ||
"name": "appzone", | ||
"version": "0.1.6", | ||
"version": "0.2.1beta", | ||
"directories": { | ||
@@ -5,0 +5,0 @@ "lib": "./lib" |
Sorry, the diff of this file is not supported yet
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
109622
31
1914
1