Skip to content

Commit 0c303a7

Browse files
author
Shane Osbourne
committed
feat(proxy): Allow user-specified proxy request headers fixes #430
1 parent 8e60723 commit 0c303a7

File tree

2 files changed

+41
-13
lines changed

2 files changed

+41
-13
lines changed

lib/cli/cli-options.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,7 @@ opts.callbacks = {
129129
mw = value.get("middleware");
130130
} else {
131131
target = value;
132+
value = Immutable.Map({});
132133
}
133134

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

153-
return Immutable.fromJS(out);
154+
return value.mergeDeep(out);
154155
},
155156
/**
156157
* @param value

lib/server/proxy-server.js

+39-12
Original file line numberDiff line numberDiff line change
@@ -22,19 +22,9 @@ module.exports = function createProxyServer (bs, scripts) {
2222
}
2323
});
2424

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

27-
var snippetOptions = options.get("snippetOptions").toJS();
28-
var foxyServer = foxy(options.getIn(["proxy", "target"]), {
29-
rules: snippetUtils.getRegex(options.get("snippet"), options.get("snippetOptions")),
30-
whitelist: snippetOptions.whitelist,
31-
blacklist: snippetOptions.blacklist,
32-
middleware: bs.options.get("middleware").push(pluginMw),
33-
errHandler: function (err) {
34-
bs.logger.debug("{red:[proxy error]} %s", err.message);
35-
}
36-
}
37-
);
27+
var foxyServer = foxy(options.getIn(["proxy", "target"]), opts);
3828

3929
return {
4030
server: (function (app) {
@@ -46,6 +36,43 @@ module.exports = function createProxyServer (bs, scripts) {
4636
};
4737
};
4838

39+
/**
40+
* @param bs
41+
* @param scripts
42+
*/
43+
function getOptions (bs, scripts) {
44+
45+
var options = bs.options;
46+
47+
var snippetOptions = options.get("snippetOptions").toJS();
48+
49+
var out = {
50+
rules: snippetUtils.getRegex(options.get("snippet"), options.get("snippetOptions")),
51+
whitelist: snippetOptions.whitelist,
52+
blacklist: snippetOptions.blacklist,
53+
middleware: options.get("middleware").push(getPluginMiddleware(bs, scripts)),
54+
errHandler: function (err) {
55+
bs.logger.debug("{red:[proxy error]} %s", err.message);
56+
}
57+
};
58+
59+
if (options.getIn(["proxy", "reqHeaders"])) {
60+
out.reqHeaders = options.getIn(["proxy", "reqHeaders"]);
61+
}
62+
63+
return out;
64+
}
65+
66+
/**
67+
* Get proxy specific middleware
68+
* @param bs
69+
* @param scripts
70+
* @returns {*}
71+
*/
72+
function getPluginMiddleware (bs, scripts) {
73+
return bs.pluginManager.hook("server:middleware", snippetUtils.getProxyMiddleware(scripts, bs.options.getIn(["scriptPaths", "versioned"])));
74+
}
75+
4976
/**
5077
* @param {Object} opts
5178
* @param {Function} cb

0 commit comments

Comments
 (0)