in apps/mountebank-mock/mountebank-source/src/models/http/baseHttpServer.js [21:68]
function postProcess (stubResponse, request) {
/* eslint complexity: 0 */
const defaultHeaders = defaultResponse.headers || {},
response = {
statusCode: stubResponse.statusCode || defaultResponse.statusCode || 200,
headers: stubResponse.headers || defaultHeaders,
body: stubResponse.body || defaultResponse.body || '',
_mode: stubResponse._mode || defaultResponse._mode || 'text'
},
responseHeaders = headersMap.of(response.headers),
encoding = response._mode === 'binary' ? 'base64' : 'utf8',
isObject = helpers.isObject;
if (isObject(response.body)) {
// Support JSON response bodies
response.body = JSON.stringify(response.body, null, 4);
}
if (options.allowCORS) {
const requestHeaders = headersMap.of(request.headers),
isCrossOriginPreflight = request.method === 'OPTIONS' &&
requestHeaders.get('Access-Control-Request-Headers') &&
requestHeaders.get('Access-Control-Request-Method') &&
requestHeaders.get('Origin');
if (isCrossOriginPreflight) {
responseHeaders.set('Access-Control-Allow-Headers', requestHeaders.get('Access-Control-Request-Headers'));
responseHeaders.set('Access-Control-Allow-Methods', requestHeaders.get('Access-Control-Request-Method'));
responseHeaders.set('Access-Control-Allow-Origin', requestHeaders.get('Origin'));
}
}
if (encoding === 'base64') {
// ensure the base64 has no newlines or other non
// base64 chars that will cause the body to be garbled.
response.body = response.body.replace(/[^A-Za-z0-9=+/]+/g, '');
}
if (!responseHeaders.has('Connection')) {
responseHeaders.set('Connection', 'close');
}
if (responseHeaders.has('Content-Length')) {
responseHeaders.set('Content-Length', Buffer.byteLength(response.body, encoding));
}
return response;
}