copy-cat
Version:
A standalone server to mock various communications services for push messaging, email, and sms.
54 lines (44 loc) • 1.42 kB
JavaScript
;
var routeValidator = require('express-route-validator'),
validator = require('validator');
module.exports = function (config) {
routeValidator.addValidators({
isMailgunApiKey: function (str) {
if (!config.apiKeys || !config.apiKeys.length) {
return true;
}
var split = str.split(' ');
if (split[0] !== 'Basic' || !validator.isBase64(split[1])) {
return false;
}
return config.apiKeys.indexOf(split[1]) !== -1;
},
isMailgunDomain: function (str) {
if (!validator.isURL(str)) {
return false;
}
if (!config.domains || !config.domains.length) {
return true;
}
return config.domains.indexOf(str) !== -1;
},
isMailgunEmail: function (str) {
if (validator.isEmail(str, { allow_display_name: true })) {
return true;
}
// Check for mailgun special case Mailgun allows: Matt test@example.com
var split = str.split(' '),
email = split[split.length - 1];
return validator.isEmail(email) || validator.isEmail(email.replace(/[<>]/g, ''));
},
isMailgunEmails: function (str) {
var emails = str.split(',');
for (var i = 0, length = emails.length; i < length; i++) {
if (!routeValidator._validators.isMailgunEmail(emails[i].trim())) {
return false;
}
}
return true;
}
});
};