Skip to content

Commit 60de543

Browse files
committed
[fix] headers, fixes #467
1 parent adc5be0 commit 60de543

File tree

3 files changed

+44
-12
lines changed

3 files changed

+44
-12
lines changed

lib/caronte/index.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ function createRightProxy(type) {
3434
var self = this,
3535
args = [].slice.call(arguments),
3636
cntr = args.length - 1,
37-
ev = 'caronte:' + type + ':',
37+
ev = 'caronte:' + type + ':incoming:',
3838
head;
3939

4040
if(
@@ -53,7 +53,7 @@ function createRightProxy(type) {
5353

5454

5555
passes.some(function(pass) {
56-
var evnt = ev + pass.name.toLowerCase();
56+
var evnt = ev + pass.name.toLowerCase() + ':';
5757

5858
options.ee.emit(evnt + 'begin', req, res);
5959
var val = pass(req, res, options, head);

lib/caronte/passes/web-outgoing.js

+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
var passes = exports;
2+
3+
/*!
4+
* Array of passes.
5+
*
6+
* A `pass` is just a function that is executed on `req, res, options`
7+
* so that you can easily add new checks while still keeping the base
8+
* flexible.
9+
*/
10+
11+
[ // <--
12+
function writeHeaders(res, proxyRes) {
13+
Object.keys(proxyRes.headers).forEach(function(key) {
14+
res.setHeader(key, proxyRes.headers[key]);
15+
});
16+
}
17+
] // <--
18+
.forEach(function(func) {
19+
passes[func.name] = func;
20+
});

lib/caronte/passes/web.js

+22-10
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,13 @@
11
var http = require('http'),
22
https = require('https'),
3+
web_o = require('./web-outgoing'),
34
common = require('../common'),
45
passes = exports;
56

7+
web_o = Object.keys(web_o).map(function(pass) {
8+
return web_o[pass];
9+
});
10+
611
/*!
712
* Array of passes.
813
*
@@ -100,20 +105,27 @@ function stream(req, res, options) {
100105
req.pipe(proxyReq);
101106

102107
proxyReq.on('response', function(proxyRes) {
108+
var ev = 'caronte:outgoing:web:';
109+
110+
options.ee.emit(ev + 'begin', req, res);
111+
112+
web_o.some(function(pass) {
113+
var evnt = ev + pass.name.toLowerCase() + ':';
114+
115+
options.ee.emit(evnt + 'begin', req, res);
116+
var val = pass(res, proxyRes);
117+
options.ee.emit(evnt + 'end');
118+
119+
return val;
120+
});
121+
122+
options.ee.emit(ev + 'end');
123+
124+
103125
proxyRes.pipe(res);
104126
});
105127

106128
//proxyReq.end();
107-
108-
/*if(options.forward) {
109-
req.pipe(new ForwardStream(options));
110-
}
111-
112-
if(options.target) {
113-
return req.pipe(new ProxyStream(options, res)).pipe(res);
114-
}
115-
116-
res.end();*/
117129
}
118130

119131
] // <--

0 commit comments

Comments
 (0)