hapi-bouncer
Version:
hapi bouncer proxy
91 lines (68 loc) • 3.14 kB
JavaScript
;
exports.__esModule = true;
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
exports.default = createProxyHandler;
var _debug = require('debug');
var _debug2 = _interopRequireDefault(_debug);
var _url = require('url');
var _url2 = _interopRequireDefault(_url);
var _createOnResponse = require('./createOnResponse');
var _createOnResponse2 = _interopRequireDefault(_createOnResponse);
var _getPayload = require('../../utils/getPayload');
var _getPayload2 = _interopRequireDefault(_getPayload);
var _ParsedUrl = require('../../utils/ParsedUrl');
var _ParsedUrl2 = _interopRequireDefault(_ParsedUrl);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var debug = (0, _debug2.default)('hapi-bouncer:createProxyHandler:debug');
var debugErr = (0, _debug2.default)('hapi-bouncer:createProxyHandler:error');
function createProxyHandler(_ref) {
var from = _ref.from,
to = _ref.to,
mapUriStrategy = _ref.mapUriStrategy,
onPayload = _ref.onPayload;
var debugReq = (0, _debug2.default)('hapi-bouncer:createProxyHandler:' + from.hostname + ':req:debug');
var debugRes = (0, _debug2.default)('hapi-bouncer:createProxyHandler:' + from.hostname + ':res:debug');
if (!mapUriStrategy) {
throw new Error('Strategy is not set');
}
// debug('init %s to %s', from.hostname, to.hostname)
function mapUri(request, cb) {
debug('mapUri %s to %s', from.hostname, to.hostname);
var newUrl = _url2.default.format(mapUriStrategy(from, to, request.url));
var headers = {
'x-forwarded-proto': from.protocol,
'x-forwarded-for': request.info.remoteAddress
};
if (request.info.remotePort) {
headers['x-forwarded-port'] = String(request.info.remotePort);
}
var newHeaders = _extends({}, request.headers);
(0, _getPayload2.default)(request.payload).then(function (payload) {
var payloadRec = {
oldUrl: from.getHostUrl() + request.url.href,
newUrl: newUrl,
headers: newHeaders,
method: request.method,
mime: request.mime,
params: request.params,
payload: payload
};
onPayload && onPayload(payloadRec);
debugReq('%s', JSON.stringify(_extends({}, payloadRec, {
payload: (payload || '').substring(0, 300)
}), null, ' '));
}).catch(function (e) {
debugErr('error: %o', e);
// cb(null, newUrl, newHeaders)
});
cb(null, newUrl, newHeaders);
}
return {
mapUri: mapUri,
onResponse: (0, _createOnResponse2.default)(debugRes, to),
xforward: false,
localStatePassThrough: true,
passThrough: true
};
}
//# sourceMappingURL=createProxyHandler.js.map