serverless-http
Version:
Use existing web application frameworks in serverless environments
46 lines (37 loc) • 1.14 kB
JavaScript
;
const url = require('url');
const Request = require('../../request');
function requestHeaders(request) {
return Object.keys(request.headers).reduce((headers, key) => {
headers[key.toLowerCase()] = request.headers[key];
return headers;
}, {});
}
function requestBody(request) {
const type = typeof request.rawBody;
if (Buffer.isBuffer(request.rawBody)) {
return request.rawBody;
} else if (type === 'string') {
return Buffer.from(request.rawBody, 'utf8');
} else if (type === 'object') {
return Buffer.from(JSON.stringify(request.rawBody));
}
throw new Error(`Unexpected request.body type: ${typeof request.rawBody}`);
}
module.exports = (request) => {
const method = request.method;
const query = request.query;
const headers = requestHeaders(request);
const body = requestBody(request);
const req = new Request({
method,
headers,
body,
url: url.format({
pathname: request.url,
query
})
});
req.requestContext = request.requestContext;
return req;
}