openhim-core
Version:
The OpenHIM core application that provides logging and routing of http requests
85 lines (69 loc) • 3.05 kB
JavaScript
var config, contactUser, escapeSpaces, logger, nodemailer, request, sendSMS, sendSMS_Clickatell;
logger = require("winston");
nodemailer = require("nodemailer");
request = require("request");
config = require("./config/config");
config.email = config.get('email');
config.nodemailer = config.get('nodemailer');
config.smsGateway = config.get('smsGateway');
exports.sendEmail = function(contactAddress, title, messagePlain, messageHTML, callback) {
var fromAddress, nodemailerConfig, smtpTransport;
nodemailerConfig = null;
fromAddress = null;
if (config.email) {
nodemailerConfig = config.email.nodemailer;
fromAddress = config.email.fromAddress;
} else if (config.nodemailer) {
nodemailerConfig = config.nodemailer;
fromAddress = nodemailerConfig.auth.user;
} else {
return callback(new Error("No email config found"));
}
logger.info(("Sending email to '" + contactAddress + "' using service ") + (nodemailerConfig.service + " - " + fromAddress));
smtpTransport = nodemailer.createTransport(nodemailerConfig);
return smtpTransport.sendMail({
from: fromAddress,
to: contactAddress,
subject: title,
text: messagePlain,
html: messageHTML
}, function(error, response) {
return callback(error != null ? error : null);
});
};
sendSMS = function(contactAddress, message, callback) {
if (config.smsGateway.provider === 'clickatell') {
return sendSMS_Clickatell(contactAddress, message, callback);
} else {
return callback("Unknown SMS gateway provider '" + config.smsGateway.provider + "'");
}
};
sendSMS_Clickatell = function(contactAddress, message, callback) {
logger.info("Sending SMS to '" + contactAddress + "' using Clickatell");
return request(("http://api.clickatell.com/http/sendmsg?api_id=" + config.smsGateway.config.apiID + "&") + ("user=" + config.smsGateway.config.user + "&password=" + config.smsGateway.config.pass + "&") + ("to=" + contactAddress + "&text=" + (escapeSpaces(message))), function(err, response, body) {
if (body != null) {
logger.info("Received response from Clickatell: " + body);
}
return callback(err != null ? err : null);
});
};
escapeSpaces = function(str) {
return str.replace(' ', '+');
};
/*
* Send a message to a user using a specific method. Current supported methods are 'email' and 'sms'.
* contactAddress should contain an email address if the method is 'email' and an MSISDN if the method is 'sms'.
*
* The contents of the message should be passed via messagePlain.
* messageHTML is optional and is only used by the 'email' method.
*/
exports.contactUser = contactUser = function(method, contactAddress, title, messagePlain, messageHTML, callback) {
if (method === 'email') {
return exports.sendEmail(contactAddress, title, messagePlain, messageHTML, callback);
} else if (method === 'sms') {
return sendSMS(contactAddress, messagePlain, callback);
} else {
return callback("Unknown contact method '" + method + "'");
}
};
//# sourceMappingURL=contact.js.map