@@ -238,69 +238,132 @@ function mapResponseHeaders(event, context, result) {
238238 return headers ;
239239}
240240
241- function logEvent ( event , context , err , result , options , moesifController ) {
242- if ( ! event . httpMethod || ! event . headers ) {
243- logMessage (
244- options . debug ,
245- 'logEvent' ,
246- 'AWS Lambda trigger must be a Load Balancer or API Gateway. ' +
247- 'See https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-set-up-simple-proxy.html#api-gateway-set-up-lambda-proxy-integration-on-proxy-resource'
248- ) ;
249- return Promise . resolve ( ) ;
241+ function constructBaseLogData (
242+ event ,
243+ context ,
244+ err ,
245+ result ,
246+ options ,
247+ isV1
248+ ) {
249+ var logData = { } ;
250+ logData . request = { } ;
251+ logData . response = { } ;
252+ if ( isV1 ) {
253+ logData . request . time =
254+ event && event . requestContext && event . requestContext . requestTimeEpoch
255+ ? new Date ( event . requestContext . requestTimeEpoch )
256+ : Date . now ( ) ;
257+ } else {
258+ logData . request . time =
259+ event && event . requestContext && event . requestContext . timeEpoch
260+ ? new Date ( event . requestContext . timeEpoch )
261+ : Date . now ( ) ;
250262 }
251263
252- if ( options . skip ( event , context ) ) {
253- // exit early
254- return Promise . resolve ( ) ;
264+ if ( isV1 ) {
265+ logData . request . uri = getURLWithQueryStringParams ( event ) ;
266+ } else {
267+ logData . request . uri =
268+ event . rawPath + ( event . rawQueryString ? "?" + event . rawQueryString : "" ) ;
255269 }
256270
257- var logData = { } ;
258- logData . request = { } ;
259- logData . response = { } ;
260- logData . request . time =
261- event && event . requestContext && event . requestContext . requestTimeEpoch
262- ? new Date ( event && event . requestContext && event . requestContext . requestTimeEpoch )
263- : Date . now ( ) ;
271+ if ( isV1 ) {
272+ logData . request . verb = event . httpMethod ;
273+ } else {
274+ logData . request . verb =
275+ event . requestContext &&
276+ event . requestContext . http &&
277+ event . requestContext . http . method ;
278+ }
264279
265- logData . request . uri = getURLWithQueryStringParams ( event ) ;
266- logData . request . verb = event . httpMethod ;
267280 logData . request . apiVerion = options . getApiVersion ( event , context ) ;
268- logData . request . ipAddress =
269- requestIp . getClientIp ( event ) ||
270- ( event . requestContext &&
271- event . requestContext . identity &&
272- event . requestContext . identity . sourceIp ) ;
281+
282+ if ( isV1 ) {
283+ logData . request . ipAddress =
284+ requestIp . getClientIp ( event ) ||
285+ ( event . requestContext &&
286+ event . requestContext . identity &&
287+ event . requestContext . identity . sourceIp ) ;
288+ } else {
289+ logData . request . ipAddress =
290+ event . requestContext &&
291+ event . requestContext . http &&
292+ event . requestContext . http . sourceIp ;
293+ }
294+
273295 logData . request . headers = event . headers || { } ;
274296 logData . metadata = options . getMetadata ( event , context ) ;
275297
276298 if ( options . logBody && event . body ) {
277299 if ( event . isBase64Encoded ) {
278300 logData . request . body = event . body ;
279- logData . request . transferEncoding = ' base64' ;
301+ logData . request . transferEncoding = " base64" ;
280302 } else {
281303 const bodyWrapper = safeJsonParse ( event . body ) ;
282304 logData . request . body = bodyWrapper . body ;
283305 logData . request . transferEncoding = bodyWrapper . transferEncoding ;
284306 }
285307 }
286308
287- logMessage ( options . debug , 'logEvent' , 'created request: \n' + JSON . stringify ( logData . request ) ) ;
309+ logMessage (
310+ options . debug ,
311+ "logEvent" ,
312+ "created request: \n" + JSON . stringify ( logData . request )
313+ ) ;
314+
288315 var safeRes = result || { } ;
289- logData . response . time = Math . max ( new Date ( logData . request . time ) . getTime ( ) , Date . now ( ) ) ;
290- logData . response . status = safeRes . statusCode ? parseInt ( safeRes . statusCode ) : 599 ;
316+ logData . response . time = Math . max (
317+ new Date ( logData . request . time ) . getTime ( ) ,
318+ Date . now ( )
319+ ) ;
320+ logData . response . status = safeRes . statusCode
321+ ? parseInt ( safeRes . statusCode )
322+ : 599 ;
291323 logData . response . headers = mapResponseHeaders ( event , context , safeRes ) ;
292324
293325 if ( options . logBody && safeRes . body ) {
294326 if ( safeRes . isBase64Encoded ) {
295327 logData . response . body = safeRes . body ;
296- logData . response . transferEncoding = ' base64' ;
328+ logData . response . transferEncoding = " base64" ;
297329 } else {
298330 const bodyWrapper = safeJsonParse ( safeRes . body ) ;
299331 logData . response . body = bodyWrapper . body ;
300332 logData . response . transferEncoding = bodyWrapper . transferEncoding ;
301333 }
302334 }
303335
336+ return logData ;
337+ }
338+
339+
340+ function logEvent ( event , context , err , result , options , moesifController ) {
341+ if ( ! event . httpMethod || ! event . headers ) {
342+ logMessage (
343+ options . debug ,
344+ 'logEvent' ,
345+ 'AWS Lambda trigger must be a Load Balancer or API Gateway. ' +
346+ 'See https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-set-up-simple-proxy.html#api-gateway-set-up-lambda-proxy-integration-on-proxy-resource'
347+ ) ;
348+ return Promise . resolve ( ) ;
349+ }
350+
351+ if ( options . skip ( event , context ) ) {
352+ // exit early
353+ return Promise . resolve ( ) ;
354+ }
355+
356+ const isV1 = event . version === '1.0' ;
357+
358+ var logData = constructBaseLogData (
359+ event ,
360+ context ,
361+ err ,
362+ result ,
363+ options ,
364+ isV1
365+ ) ;
366+
304367 logMessage ( options . debug , 'logEvent' , 'created data: \n' + JSON . stringify ( logData ) ) ;
305368
306369 logData = options . maskContent ( logData ) ;
0 commit comments