@@ -52,9 +52,6 @@ module.exports = function (options, handler) {
52
52
metadata . request_context = event && event . requestContext ;
53
53
return metadata ;
54
54
} ;
55
- options . getTags = options . getTags || function ( ) {
56
- return undefined ;
57
- } ;
58
55
options . getApiVersion = options . getApiVersion || function ( event , context ) {
59
56
return context . functionVersion ;
60
57
} ;
@@ -242,36 +239,49 @@ function mapResponseHeaders(event, context, result) {
242
239
}
243
240
244
241
function logEvent ( event , context , err , result , options , moesifController ) {
245
-
246
242
if ( ! event . httpMethod || ! event . headers ) {
247
- logMessage ( options . debug , 'logEvent' , 'Expecting input format to be the API Gateway proxy integration type. ' +
248
- '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' ) ;
249
- return ;
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 ( ) ;
250
+ }
251
+
252
+ if ( options . skip ( event , context ) ) {
253
+ // exit early
254
+ return Promise . resolve ( ) ;
250
255
}
251
256
252
257
var logData = { } ;
253
258
logData . request = { } ;
254
259
logData . response = { } ;
255
- logData . request . time = event && event . requestContext && event . requestContext . requestTimeEpoch ?
256
- new Date ( event && event . requestContext && event . requestContext . requestTimeEpoch ) :
257
- Date . now ( ) ;
260
+ logData . request . time =
261
+ event && event . requestContext && event . requestContext . requestTimeEpoch
262
+ ? new Date ( event && event . requestContext && event . requestContext . requestTimeEpoch )
263
+ : Date . now ( ) ;
258
264
259
265
logData . request . uri = getURLWithQueryStringParams ( event ) ;
260
266
logData . request . verb = event . httpMethod ;
261
267
logData . request . apiVerion = options . getApiVersion ( event , context ) ;
262
- logData . request . ipAddress = requestIp . getClientIp ( event ) || ( event . requestContext && event . requestContext . identity && event . requestContext . identity . sourceIp ) ;
268
+ logData . request . ipAddress =
269
+ requestIp . getClientIp ( event ) ||
270
+ ( event . requestContext &&
271
+ event . requestContext . identity &&
272
+ event . requestContext . identity . sourceIp ) ;
263
273
logData . request . headers = event . headers || { } ;
264
274
logData . metadata = options . getMetadata ( event , context ) ;
265
275
266
276
if ( options . logBody && event . body ) {
267
- if ( event . isBase64Encoded ) {
268
- logData . request . body = event . body ;
269
- logData . request . transferEncoding = 'base64' ;
270
- } else {
271
- const bodyWrapper = safeJsonParse ( event . body ) ;
272
- logData . request . body = bodyWrapper . body
273
- logData . request . transferEncoding = bodyWrapper . transferEncoding
274
- }
277
+ if ( event . isBase64Encoded ) {
278
+ logData . request . body = event . body ;
279
+ logData . request . transferEncoding = 'base64' ;
280
+ } else {
281
+ const bodyWrapper = safeJsonParse ( event . body ) ;
282
+ logData . request . body = bodyWrapper . body ;
283
+ logData . request . transferEncoding = bodyWrapper . transferEncoding ;
284
+ }
275
285
}
276
286
277
287
logMessage ( options . debug , 'logEvent' , 'created request: \n' + JSON . stringify ( logData . request ) ) ;
@@ -281,58 +291,68 @@ function logEvent(event, context, err, result, options, moesifController) {
281
291
logData . response . headers = mapResponseHeaders ( event , context , safeRes ) ;
282
292
283
293
if ( options . logBody && safeRes . body ) {
284
- if ( safeRes . isBase64Encoded ) {
285
- logData . response . body = safeRes . body ;
286
- logData . response . transferEncoding = 'base64' ;
287
- } else {
288
- const bodyWrapper = safeJsonParse ( safeRes . body ) ;
289
- logData . response . body = bodyWrapper . body
290
- logData . response . transferEncoding = bodyWrapper . transferEncoding
291
- }
294
+ if ( safeRes . isBase64Encoded ) {
295
+ logData . response . body = safeRes . body ;
296
+ logData . response . transferEncoding = 'base64' ;
297
+ } else {
298
+ const bodyWrapper = safeJsonParse ( safeRes . body ) ;
299
+ logData . response . body = bodyWrapper . body ;
300
+ logData . response . transferEncoding = bodyWrapper . transferEncoding ;
301
+ }
292
302
}
293
303
294
304
logMessage ( options . debug , 'logEvent' , 'created data: \n' + JSON . stringify ( logData ) ) ;
295
305
296
306
logData = options . maskContent ( logData ) ;
297
307
298
- logData . userId = options . identifyUser ( event , context ) ;
299
- logData . companyId = options . identifyCompany ( event , context ) ;
300
- logData . sessionToken = options . getSessionToken ( event , context ) ;
301
- logData . tags = options . getTags ( event , context ) ;
308
+ return Promise . all ( [
309
+ options . identifyUser ( event , context ) ,
310
+ options . identifyCompany ( event , context )
311
+ ] ) . then ( ( [ userId , companyId ] ) => {
312
+ logData . userId = userId ;
313
+ logData . companyId = companyId ;
314
+ logData . sessionToken = options . getSessionToken ( event , context ) ;
302
315
303
- // Set API direction
304
- logData . direction = " Incoming"
316
+ // Set API direction
317
+ logData . direction = ' Incoming' ;
305
318
306
- logMessage ( options . debug , 'logEvent' , 'applied options to data: \n' + JSON . stringify ( logData ) ) ;
319
+ logMessage ( options . debug , 'logEvent' , 'applied options to data: \n' + JSON . stringify ( logData ) ) ;
307
320
308
- ensureValidLogData ( logData ) ;
321
+ ensureValidLogData ( logData ) ;
309
322
310
- // This is fire and forget, we don't want logging to hold up the request so don't wait for the callback
311
- if ( ! options . skip ( event , context ) && moesifConfigManager . shouldSend ( logData && logData . userId , logData && logData . companyId ) ) {
312
-
313
- let sampleRate = moesifConfigManager . _getSampleRate ( logData && logData . userId , logData && logData . companyId ) ;
314
- logData . weight = sampleRate === 0 ? 1 : Math . floor ( 100 / sampleRate ) ;
323
+ // This is fire and forget, we don't want logging to hold up the request so don't wait for the callback
324
+ if ( moesifConfigManager . shouldSend ( logData && logData . userId , logData && logData . companyId ) ) {
325
+ let sampleRate = moesifConfigManager . _getSampleRate (
326
+ logData && logData . userId ,
327
+ logData && logData . companyId
328
+ ) ;
329
+ logData . weight = sampleRate === 0 ? 1 : Math . floor ( 100 / sampleRate ) ;
315
330
316
- logMessage ( options . debug , 'logEvent' , 'sending data invoking moesifAPI' ) ;
331
+ logMessage ( options . debug , 'logEvent' , 'sending data invoking moesifAPI' ) ;
317
332
318
- return new Promise ( ( resolve ) => {
319
- moesifController . createEvent ( new EventModel ( logData ) , function ( err ) {
320
- if ( err ) {
321
- logMessage ( options . debug , 'logEvent' , 'Moesif API failed with err=' + JSON . stringify ( err ) ) ;
322
- if ( options . callback ) {
323
- options . callback ( err , logData ) ;
324
- }
325
- } else {
326
- logMessage ( options . debug , 'logEvent' , 'Moesif API succeeded' ) ;
327
- if ( options . callback ) {
328
- options . callback ( null , logData ) ;
333
+ return new Promise ( ( resolve ) => {
334
+ moesifController . createEvent ( new EventModel ( logData ) , function ( err ) {
335
+ if ( err ) {
336
+ logMessage (
337
+ options . debug ,
338
+ 'logEvent' ,
339
+ 'Moesif API failed with err=' + JSON . stringify ( err )
340
+ ) ;
341
+ if ( options . callback ) {
342
+ options . callback ( err , logData ) ;
343
+ }
344
+ } else {
345
+ logMessage ( options . debug , 'logEvent' , 'Moesif API succeeded' ) ;
346
+ if ( options . callback ) {
347
+ options . callback ( null , logData ) ;
348
+ }
329
349
}
330
- }
331
- resolve ( ) ;
350
+ resolve ( ) ;
351
+ } ) ;
332
352
} ) ;
333
- } )
334
- }
335
- return Promise . resolve ( ) ;
353
+ }
354
+ return Promise . resolve ( ) ;
355
+ } ) ;
336
356
}
337
357
338
358
function bodyToBase64 ( body ) {
@@ -411,9 +431,6 @@ function ensureValidOptions(options) {
411
431
if ( options . getMetadata && ! _ . isFunction ( options . getMetadata ) ) {
412
432
throw new Error ( 'getMetadata should be a function' ) ;
413
433
}
414
- if ( options . getTags && ! _ . isFunction ( options . getTags ) ) {
415
- throw new Error ( 'getTags should be a function' ) ;
416
- }
417
434
if ( options . getApiVersion && ! _ . isFunction ( options . getApiVersion ) ) {
418
435
throw new Error ( 'getApiVersion should be a function' ) ;
419
436
}
0 commit comments