Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 | "use strict"; let config = require("../leoConfigure.js"); module.exports = function (configOverride, botHandler) { if (!botHandler) { botHandler = configOverride; configOverride = {}; } Object.assign(config, configOverride); return function (event, context, callback) { context.callbackWaitsForEmptyEventLoop = false; if (context.identity) { // Called Directly not via Api Gateway event = { body: event.body, httpMethod: event.httpMethod, queryStringParameters: event.queryStringParameters, headers: { Cookie: event.headers && event.headers.Cookie, }, requestContext: { requestId: context.awsRequestId, identity: context.identity } }; } context.botId = config.name; for (let x of process.listeners('uncaughtException')) { //remove lambdas default listener process.removeListener('uncaughtException', x); } process.on('uncaughtException', function (err) { console.error((new Date).toUTCString() + ' uncaughtException:', err.message); console.error(err.stack); callback(null, { statusCode: 500, 'Content-Type': 'application/json', body: JSON.stringify("Application Error") }); }); if (event.requestContext) { //new lambda proxy method if (event.isBase64Encoded) { event.body = Buffer.from(event.body, 'base64'); } else if (event.body && typeof event.body !== "object") { event.body = JSON.parse(event.body); } event.params = { path: event.pathParameters || {}, querystring: event.queryStringParameters || {} }; Object.keys(event.params.path).map((key) => { event.params.path[key] = decodeURIComponent(event.params.path[key]); }); } event.pathParameters = event.pathParameters || {}; event.queryStringParameters = event.queryStringParameters || {}; let promise = botHandler(event, context, function (err, data) { if (data && typeof data === "object" && "statusCode" in data) { if (config.cors && !("Access-Control-Allow-Origin" in data.headers)) { data.headers["Access-Control-Allow-Origin"] = config.cors; } callback(null, data); } else if (err === "Access Denied" || err === "Error: Access Denied") { callback(null, { statusCode: 403, headers: { 'Content-Type': config.ErrorContentType || 'text/html', "Access-Control-Allow-Origin": config.cors ? config.cors : undefined }, body: err.toString() }); } else if (err) { console.log(err); if (typeof err === "object" && "statusCode" in err) { if (config.cors && err.headers && !("Access-Control-Allow-Origin" in err.headers)) { err.headers["Access-Control-Allow-Origin"] = config.cors; } callback(null, err) } else { callback(null, { statusCode: 500, headers: { 'Content-Type': config.ErrorContentType || 'text/html', "Access-Control-Allow-Origin": config.cors ? config.cors : undefined }, body: err.toString() }); } } else { callback(null, { statusCode: 200, headers: { 'Content-Type': config.ContentType || 'application/json', "Access-Control-Allow-Origin": config.cors ? config.cors : undefined }, body: JSON.stringify(data) }); } }); if (promise && promise.catch) { promise.catch(err => { if (err === "Access Denied" || err === "Error: Access Denied") { callback(null, { statusCode: 403, headers: { 'Content-Type': config.ErrorContentType || 'text/html', "Access-Control-Allow-Origin": config.cors ? config.cors : undefined }, body: err.toString() }); } else if (err) { console.log(err); callback(null, { statusCode: 500, headers: { 'Content-Type': config.ErrorContentType || 'text/html', "Access-Control-Allow-Origin": config.cors ? config.cors : undefined }, //we caught an error they didn't send us, don't reveal it here body: "Unexpected Server Error" }); } }); } }; }; |