-
Notifications
You must be signed in to change notification settings - Fork 0
/
proxy.js
63 lines (56 loc) · 1.35 KB
/
proxy.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
var http = require('http'),
httpProxy = require('http-proxy');
var proxy = httpProxy.createProxyServer({target:'http://openapi.tencentyun.com'}).listen(8321);
var log = require('./log');
var record = function(reqUrl,resBody){
console.log(reqUrl);
console.log(resBody);
try{
var resJson = JSON.parse(resBody);
if(resJson.ret == 0){
log.info({
data:{
req:reqUrl,
res:resBody
}
},'api proxy success');
}else{
log.warn({
data:{
req:reqUrl,
res:resBody
}
},'qqzone unsuccess resturn');
}
}catch (e){
log.error({
data:{
error:e
}
},'parse json error');
}
}
proxy.on('proxyRes', function (proxyRes, req, res) {
var chunks = '';
var _end = res.end;
var _write = res.write;
res.write = function( data ) {
if( chunks ) {
chunks += data;
} else {
chunks = data;
}
_write.apply(res,[data]);
};
res.end = function(){
var reqUrl = req.url;
var resBody = chunks.toString();
record(reqUrl,resBody);
_end.apply(res,arguments);
}
});
http.createServer(function (req, res) {
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.write('request successfully proxied!' + '\n' + JSON.stringify(req.headers, true, 2));
res.end();
}).listen(9000);