in knative-build/runtimes/javascript/platform/knative.js [331:371]
function preProcessRequest(req){
DEBUG.functionStart();
try {
let env = process.env || {};
// Get or create valid references to the various data we might encounter
// in a request such as Init., Activation and function parameter data.
let body = req.body || {};
let valueData = body.value || {};
let initData = body.init || {};
let activationData = body.activation || {};
// process initialization (i.e., "init") data
if (hasInitData(req)) {
preProcessInitData(initData, valueData, activationData);
}
marshalResources(initData, valueData);
if(hasActivationData(req)) {
// process HTTP request header and body to make it available to function as parameter data
preProcessHTTPContext(req, valueData);
// process per-activation (i.e, "run") data
preProcessActivationData(env, activationData);
}
// Fix up pointers in case we had to allocate new maps
req.body = body;
req.body.value = valueData;
req.body.init = initData;
req.body.activation = activationData;
} catch(e){
console.error(e);
DEBUG.functionEndError(e.message);
// TODO: test this error is handled properly and results in an HTTP error response
throw("Unable to process request data: " + e.message);
}
DEBUG.functionEnd();
}