Skip to content

Commit

Permalink
feat(proxy): Allow user-specified proxy request headers fixes #430
Browse files Browse the repository at this point in the history
  • Loading branch information
Shane Osbourne committed Feb 16, 2015
1 parent 8e60723 commit 0c303a7
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 13 deletions.
3 changes: 2 additions & 1 deletion lib/cli/cli-options.js
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,7 @@ opts.callbacks = {
mw = value.get("middleware");
} else {
target = value;
value = Immutable.Map({});
}

if (!target.match(/^(https?):\/\//)) {
Expand All @@ -150,7 +151,7 @@ opts.callbacks = {
out.middleware = mw;
}

return Immutable.fromJS(out);
return value.mergeDeep(out);
},
/**
* @param value
Expand Down
51 changes: 39 additions & 12 deletions lib/server/proxy-server.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,19 +22,9 @@ module.exports = function createProxyServer (bs, scripts) {
}
});

var pluginMw = bs.pluginManager.hook("server:middleware", snippetUtils.getProxyMiddleware(scripts, options.getIn(["scriptPaths", "versioned"])));
var opts = getOptions(bs, scripts);

var snippetOptions = options.get("snippetOptions").toJS();
var foxyServer = foxy(options.getIn(["proxy", "target"]), {
rules: snippetUtils.getRegex(options.get("snippet"), options.get("snippetOptions")),
whitelist: snippetOptions.whitelist,
blacklist: snippetOptions.blacklist,
middleware: bs.options.get("middleware").push(pluginMw),
errHandler: function (err) {
bs.logger.debug("{red:[proxy error]} %s", err.message);
}
}
);
var foxyServer = foxy(options.getIn(["proxy", "target"]), opts);

return {
server: (function (app) {
Expand All @@ -46,6 +36,43 @@ module.exports = function createProxyServer (bs, scripts) {
};
};

/**
* @param bs
* @param scripts
*/
function getOptions (bs, scripts) {

var options = bs.options;

var snippetOptions = options.get("snippetOptions").toJS();

var out = {
rules: snippetUtils.getRegex(options.get("snippet"), options.get("snippetOptions")),
whitelist: snippetOptions.whitelist,
blacklist: snippetOptions.blacklist,
middleware: options.get("middleware").push(getPluginMiddleware(bs, scripts)),
errHandler: function (err) {
bs.logger.debug("{red:[proxy error]} %s", err.message);
}
};

if (options.getIn(["proxy", "reqHeaders"])) {
out.reqHeaders = options.getIn(["proxy", "reqHeaders"]);
}

return out;
}

/**
* Get proxy specific middleware
* @param bs
* @param scripts
* @returns {*}
*/
function getPluginMiddleware (bs, scripts) {
return bs.pluginManager.hook("server:middleware", snippetUtils.getProxyMiddleware(scripts, bs.options.getIn(["scriptPaths", "versioned"])));
}

/**
* @param {Object} opts
* @param {Function} cb
Expand Down

0 comments on commit 0c303a7

Please sign in to comment.