koa-mocking-http-proxy
Version:
http proxy middleware for koa
44 lines (32 loc) • 1.1 kB
JavaScript
;
var as = require('../../lib/as');
function getContentLength(body) {
var result;
if (Buffer.isBuffer(body)) { // Buffer
result = body.length;
} else if (typeof body === 'string') {
result = Buffer.byteLength(body);
}
return result;
}
function prepareProxyReq(container) {
return new Promise(function(resolve) {
var bodyContent = container.proxy.bodyContent;
var reqOpt = container.proxy.reqBuilder;
if (bodyContent) {
bodyContent = container.options.reqAsBuffer ?
as.buffer(bodyContent, container.options) :
as.bufferOrString(bodyContent);
reqOpt.headers['content-length'] = getContentLength(bodyContent);
if (reqOpt.headers['transfer-encoding'] && reqOpt.headers['transfer-encoding'] === 'chunked') {
delete reqOpt.headers['content-length'];
}
if (container.options.reqBodyEncoding) {
reqOpt.headers['accept-charset'] = container.options.reqBodyEncoding;
}
}
container.proxy.bodyContent = bodyContent;
resolve(container);
});
}
module.exports = prepareProxyReq;