add mailer

This commit is contained in:
AJ ONeal 2017-05-24 07:34:34 +00:00
parent 52a6627e84
commit 648c136fcf
1 changed files with 53 additions and 21 deletions

View File

@ -11,6 +11,7 @@ module.exports.create = function (xconfx, apiFactories, apiDeps) {
// TODO xconfx.apispath
xconfx.restPath = path.join(__dirname, '..', '..', 'packages', 'rest');
xconfx.appApiGrantsPath = path.join(__dirname, '..', '..', 'packages', 'client-api-grants');
xconfx.appConfigPath = path.join(__dirname, '..', '..', 'var');
function notConfigured(req, res) {
var msg = "api package '" + req.pkgId + "' not configured for client uri '" + req.experienceId + "'"
@ -54,6 +55,12 @@ module.exports.create = function (xconfx, apiFactories, apiDeps) {
});
}
function getSiteConfig(clientUrih) {
return fs.readFileAsync(path.join(xconfx.appConfigPath, clientUrih + '.json'), 'utf8').then(function (text) {
return JSON.parse(text);
}).then(function (data) { return data; }, function (/*err*/) { return {}; });
}
function loadRestHelper(myConf, pkgId) {
var pkgPath = path.join(myConf.restPath, pkgId);
@ -229,30 +236,55 @@ module.exports.create = function (xconfx, apiFactories, apiDeps) {
return null;
}
if (localCache.rests[pkgId]) {
localCache.rests[pkgId].handler(req, res, next);
hasBeenHandled = true;
return getSiteConfig(clientUrih).then(function (siteConfig) {
/*
Object.defineProperty(req, 'siteConfig', {
enumerable: true
, configurable: false
, writable: false
, value: siteConfig
});
*/
Object.defineProperty(req, 'getSiteMailer', {
enumerable: true
, configurable: false
, writable: false
, value: function getSiteMailer() {
var nodemailer = require('nodemailer');
var transport = require('nodemailer-mailgun-transport');
//var mailconf = require('../../../com.daplie.mailer/config.mailgun');
var mailconf = siteConfig['mailgun.org'];
var mailer = PromiseA.promisifyAll(nodemailer.createTransport(transport(mailconf)));
if (now - localCache.rests[pkgId].createdAt > staleAfter) {
localCache.rests[pkgId] = null;
}
}
if (!localCache.rests[pkgId]) {
//return doesThisPkgExist
return loadRestHandler(xconfx, pkgId).then(function (myHandler) {
if (!myHandler) {
notConfigured(req, res);
return;
}
localCache.rests[pkgId] = { handler: myHandler.handler, createdAt: now };
if (!hasBeenHandled) {
myHandler.handler(req, res, next);
return mailer;
}
});
}
if (localCache.rests[pkgId]) {
localCache.rests[pkgId].handler(req, res, next);
hasBeenHandled = true;
if (now - localCache.rests[pkgId].createdAt > staleAfter) {
localCache.rests[pkgId] = null;
}
}
if (!localCache.rests[pkgId]) {
//return doesThisPkgExist
return loadRestHandler(xconfx, pkgId).then(function (myHandler) {
if (!myHandler) {
notConfigured(req, res);
return;
}
localCache.rests[pkgId] = { handler: myHandler.handler, createdAt: now };
if (!hasBeenHandled) {
myHandler.handler(req, res, next);
}
});
}
});
});
});
};