UNPKG

openhim-core

Version:

The OpenHIM core application that provides logging and routing of http requests

85 lines (69 loc) 3.05 kB
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