mirror of
https://gitee.com/java110/MicroCommunityWeb.git
synced 2026-02-24 13:56:05 +08:00
80 lines
2.5 KiB
JavaScript
Executable File
80 lines
2.5 KiB
JavaScript
Executable File
'use strict';
|
|
|
|
var debug = require('debug')('express-http-proxy');
|
|
|
|
var isUnset = require('../lib/isUnset');
|
|
|
|
function resolveBodyEncoding(reqBodyEncoding) {
|
|
|
|
/* For reqBodyEncoding, these is a meaningful difference between null and
|
|
* undefined. null should be passed forward as the value of reqBodyEncoding,
|
|
* and undefined should result in utf-8.
|
|
*/
|
|
return reqBodyEncoding !== undefined ? reqBodyEncoding : 'utf-8';
|
|
}
|
|
|
|
// parse client arguments
|
|
|
|
function resolveOptions(options) {
|
|
options = options || {};
|
|
var resolved;
|
|
|
|
if (options.decorateRequest) {
|
|
throw new Error(
|
|
'decorateRequest is REMOVED; use proxyReqOptDecorator and' +
|
|
' proxyReqBodyDecorator instead. see README.md'
|
|
);
|
|
}
|
|
|
|
if (options.forwardPath || options.forwardPathAsync) {
|
|
console.warn(
|
|
'forwardPath and forwardPathAsync are DEPRECATED' +
|
|
' and should be replaced with proxyReqPathResolver'
|
|
);
|
|
}
|
|
|
|
if (options.intercept) {
|
|
console.warn(
|
|
'DEPRECATED: intercept. Use userResDecorator instead.' +
|
|
' Please see README for more information.'
|
|
);
|
|
}
|
|
|
|
resolved = {
|
|
limit: options.limit || '1mb',
|
|
proxyReqPathResolver: options.proxyReqPathResolver
|
|
|| options.forwardPathAsync
|
|
|| options.forwardPath,
|
|
proxyReqOptDecorator: options.proxyReqOptDecorator,
|
|
proxyReqBodyDecorator: options.proxyReqBodyDecorator,
|
|
userResDecorator: options.userResDecorator || options.intercept,
|
|
userResHeaderDecorator: options.userResHeaderDecorator,
|
|
proxyErrorHandler: options.proxyErrorHandler,
|
|
filter: options.filter,
|
|
// For backwards compatability, we default to legacy behavior for newly added settings.
|
|
|
|
parseReqBody: isUnset(options.parseReqBody) ? true : options.parseReqBody,
|
|
preserveHostHdr: options.preserveHostHdr,
|
|
memoizeHost: isUnset(options.memoizeHost) ? true : options.memoizeHost,
|
|
reqBodyEncoding: resolveBodyEncoding(options.reqBodyEncoding),
|
|
skipToNextHandlerFilter: options.skipToNextHandlerFilter,
|
|
headers: options.headers,
|
|
preserveReqSession: options.preserveReqSession,
|
|
https: options.https,
|
|
port: options.port,
|
|
reqAsBuffer: options.reqAsBuffer,
|
|
timeout: options.timeout
|
|
};
|
|
|
|
// automatically opt into stream mode if no response modifiers are specified
|
|
|
|
resolved.stream = !resolved.skipToNextHandlerFilter &&
|
|
!resolved.userResDecorator &&
|
|
!resolved.userResHeaderDecorator;
|
|
|
|
debug(resolved);
|
|
return resolved;
|
|
}
|
|
|
|
module.exports = resolveOptions;
|