Initial import from local backup (Documents-Playground/pakerpale)
This commit is contained in:
78
node_modules/express-http-proxy/app/steps/sendProxyRequest.js
generated
vendored
Normal file
78
node_modules/express-http-proxy/app/steps/sendProxyRequest.js
generated
vendored
Normal file
@@ -0,0 +1,78 @@
|
||||
'use strict';
|
||||
|
||||
var chunkLength = require('../../lib/chunkLength');
|
||||
|
||||
function sendProxyRequest(Container) {
|
||||
var req = Container.user.req;
|
||||
var bodyContent = Container.proxy.bodyContent;
|
||||
var reqOpt = Container.proxy.reqBuilder;
|
||||
var options = Container.options;
|
||||
|
||||
return new Promise(function(resolve, reject) {
|
||||
var protocol = Container.proxy.requestModule;
|
||||
var proxyReq = Container.proxy.req = protocol.request(reqOpt, function(rsp) {
|
||||
if (options.stream) {
|
||||
Container.proxy.res = rsp;
|
||||
return resolve(Container);
|
||||
}
|
||||
|
||||
var chunks = [];
|
||||
rsp.on('data', function(chunk) { chunks.push(chunk); });
|
||||
rsp.on('end', function() {
|
||||
Container.proxy.res = rsp;
|
||||
Container.proxy.resData = Buffer.concat(chunks, chunkLength(chunks));
|
||||
resolve(Container);
|
||||
});
|
||||
rsp.on('error', reject);
|
||||
});
|
||||
|
||||
proxyReq.on('socket', function(socket) {
|
||||
if (options.timeout) {
|
||||
socket.setTimeout(options.timeout, function() {
|
||||
proxyReq.abort();
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
proxyReq.on('error', reject);
|
||||
|
||||
// this guy should go elsewhere, down the chain
|
||||
if (options.parseReqBody) {
|
||||
// We are parsing the body ourselves so we need to write the body content
|
||||
// and then manually end the request.
|
||||
|
||||
//if (bodyContent instanceof Object) {
|
||||
//throw new Error
|
||||
//debugger;
|
||||
//bodyContent = JSON.stringify(bodyContent);
|
||||
//}
|
||||
|
||||
if (bodyContent.length) {
|
||||
var body = bodyContent;
|
||||
var contentType = proxyReq.getHeader('Content-Type');
|
||||
if (contentType === 'x-www-form-urlencoded' || contentType === 'application/x-www-form-urlencoded') {
|
||||
try {
|
||||
var params = JSON.parse(body);
|
||||
body = Object.keys(params).map(function(k) { return k + '=' + params[k]; }).join('&');
|
||||
} catch (e) {
|
||||
// bodyContent is not json-format
|
||||
}
|
||||
}
|
||||
proxyReq.setHeader('Content-Length', Buffer.byteLength(body));
|
||||
proxyReq.write(body);
|
||||
}
|
||||
proxyReq.end();
|
||||
} else {
|
||||
// Pipe will call end when it has completely read from the request.
|
||||
req.pipe(proxyReq);
|
||||
}
|
||||
|
||||
req.on('aborted', function() {
|
||||
// reject?
|
||||
proxyReq.abort();
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
module.exports = sendProxyRequest;
|
||||
Reference in New Issue
Block a user