@@ -52,9 +52,6 @@ module.exports = function (options, handler) {
5252 metadata . request_context = event && event . requestContext ;
5353 return metadata ;
5454 } ;
55- options . getTags = options . getTags || function ( ) {
56- return undefined ;
57- } ;
5855 options . getApiVersion = options . getApiVersion || function ( event , context ) {
5956 return context . functionVersion ;
6057 } ;
@@ -242,36 +239,49 @@ function mapResponseHeaders(event, context, result) {
242239}
243240
244241function logEvent ( event , context , err , result , options , moesifController ) {
245-
246242 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 ( ) ;
250255 }
251256
252257 var logData = { } ;
253258 logData . request = { } ;
254259 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 ( ) ;
258264
259265 logData . request . uri = getURLWithQueryStringParams ( event ) ;
260266 logData . request . verb = event . httpMethod ;
261267 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 ) ;
263273 logData . request . headers = event . headers || { } ;
264274 logData . metadata = options . getMetadata ( event , context ) ;
265275
266276 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+ }
275285 }
276286
277287 logMessage ( options . debug , 'logEvent' , 'created request: \n' + JSON . stringify ( logData . request ) ) ;
@@ -281,58 +291,68 @@ function logEvent(event, context, err, result, options, moesifController) {
281291 logData . response . headers = mapResponseHeaders ( event , context , safeRes ) ;
282292
283293 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+ }
292302 }
293303
294304 logMessage ( options . debug , 'logEvent' , 'created data: \n' + JSON . stringify ( logData ) ) ;
295305
296306 logData = options . maskContent ( logData ) ;
297307
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 ) ;
302315
303- // Set API direction
304- logData . direction = " Incoming"
316+ // Set API direction
317+ logData . direction = ' Incoming' ;
305318
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 ) ) ;
307320
308- ensureValidLogData ( logData ) ;
321+ ensureValidLogData ( logData ) ;
309322
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 ) ;
315330
316- logMessage ( options . debug , 'logEvent' , 'sending data invoking moesifAPI' ) ;
331+ logMessage ( options . debug , 'logEvent' , 'sending data invoking moesifAPI' ) ;
317332
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+ }
329349 }
330- }
331- resolve ( ) ;
350+ resolve ( ) ;
351+ } ) ;
332352 } ) ;
333- } )
334- }
335- return Promise . resolve ( ) ;
353+ }
354+ return Promise . resolve ( ) ;
355+ } ) ;
336356}
337357
338358function bodyToBase64 ( body ) {
@@ -411,9 +431,6 @@ function ensureValidOptions(options) {
411431 if ( options . getMetadata && ! _ . isFunction ( options . getMetadata ) ) {
412432 throw new Error ( 'getMetadata should be a function' ) ;
413433 }
414- if ( options . getTags && ! _ . isFunction ( options . getTags ) ) {
415- throw new Error ( 'getTags should be a function' ) ;
416- }
417434 if ( options . getApiVersion && ! _ . isFunction ( options . getApiVersion ) ) {
418435 throw new Error ( 'getApiVersion should be a function' ) ;
419436 }
0 commit comments