@@ -52,14 +52,23 @@ def __init__(self, handler):
52
52
self .DEBUG = self .moesif_options .get ('DEBUG' , False )
53
53
self .event = None
54
54
self .context = None
55
- self .start_time = datetime .utcnow ()
56
55
57
56
# Intialized the client
58
57
if os .environ .get ("MOESIF_APPLICATION_ID" ):
59
58
self .api_client = MoesifAPIClient (os .environ ["MOESIF_APPLICATION_ID" ]).api
60
59
else :
61
60
raise Exception ('Moesif Application ID is required in settings' )
62
61
62
+ def clear_state (self ):
63
+ """Function to clear state of local variable"""
64
+ self .event = None
65
+ self .context = None
66
+ self .event_req = None
67
+ self .metadata = None
68
+ self .session_token = None
69
+ self .user_id = None
70
+ self .company_id = None
71
+
63
72
def get_user_id (self , event , context ):
64
73
"""Function to fetch UserId"""
65
74
username = None
@@ -130,10 +139,19 @@ def process_body(self, body_wrapper):
130
139
def before (self , event , context ):
131
140
"""This function runs before the handler is invoked, is passed the event & context and must return an event & context too."""
132
141
142
+ # Clear the state of the local variables
143
+ self .clear_state ()
144
+
145
+ # Set/Save event and context for use Skip Event function
146
+ self .event = event
147
+ self .context = context
148
+
133
149
# Request Method
134
150
request_verb = event .get ('httpMethod' )
135
151
if request_verb is None :
136
152
print ('MOESIF: [before] AWS Lambda trigger must be a Load Balancer or API Gateway See https://docs.aws.amazon.com/lambda/latest/dg/services-alb.html or https://docs.aws.amazon.com/lambda/latest/dg/with-on-demand-https.html.' )
153
+ self .event = None
154
+ self .context = None
137
155
return event , context
138
156
139
157
# Request headers
@@ -149,9 +167,9 @@ def before(self, event, context):
149
167
# Request Time
150
168
epoch = event and event .get ('request_context' , {}).get ('requestTimeEpoch' )
151
169
if epoch is not None :
152
- request_time = datetime .utcfromtimestamp (epoch )
170
+ request_time = datetime .utcfromtimestamp (epoch )
153
171
else :
154
- request_time = self . start_time
172
+ request_time = datetime . utcnow ()
155
173
156
174
# Request Body
157
175
req_body , req_transfer_encoding = self .process_body (event )
@@ -234,66 +252,64 @@ def before(self, event, context):
234
252
body = req_body ,
235
253
transfer_encoding = req_transfer_encoding )
236
254
237
- # Set/Save event and context for use Skip Event function
238
- self .event = event
239
- self .context = context
240
-
241
255
# Return event, context
242
256
return event , context
243
257
244
258
def after (self , retval ):
245
259
"""This function runs after the handler is invoked, is passed the response and must return an response too."""
246
- # Response body
247
- resp_body , resp_transfer_encoding = self .process_body (retval )
260
+
261
+ if self .event is not None :
262
+ # Response body
263
+ resp_body , resp_transfer_encoding = self .process_body (retval )
248
264
249
- # Event Response object
250
- event_rsp = EventResponseModel (time = datetime .utcnow ().strftime ("%Y-%m-%dT%H:%M:%S.%f" )[:- 3 ],
251
- status = retval .get ('statusCode' , 599 ),
252
- headers = retval .get ('headers' , {}),
253
- body = resp_body ,
254
- transfer_encoding = resp_transfer_encoding )
265
+ # Event Response object
266
+ event_rsp = EventResponseModel (time = datetime .utcnow ().strftime ("%Y-%m-%dT%H:%M:%S.%f" )[:- 3 ],
267
+ status = retval .get ('statusCode' , 599 ),
268
+ headers = retval .get ('headers' , {}),
269
+ body = resp_body ,
270
+ transfer_encoding = resp_transfer_encoding )
255
271
256
- # Event object
257
- event_model = EventModel (request = self .event_req ,
258
- response = event_rsp ,
259
- user_id = self .user_id ,
260
- company_id = self .company_id ,
261
- session_token = self .session_token ,
262
- metadata = self .metadata )
263
-
264
- # Mask Event Model
265
- try :
266
- mask_event_model = self .moesif_options .get ('MASK_EVENT_MODEL' , None )
267
- if mask_event_model is not None :
268
- event_model = mask_event_model (event_model )
269
- except :
270
- if self .DEBUG :
271
- print ("MOESIF Can not execute MASK_EVENT_MODEL function. Please check moesif settings." )
272
+ # Event object
273
+ event_model = EventModel (request = self .event_req ,
274
+ response = event_rsp ,
275
+ user_id = self .user_id ,
276
+ company_id = self .company_id ,
277
+ session_token = self .session_token ,
278
+ metadata = self .metadata )
279
+
280
+ # Mask Event Model
281
+ try :
282
+ mask_event_model = self .moesif_options .get ('MASK_EVENT_MODEL' , None )
283
+ if mask_event_model is not None :
284
+ event_model = mask_event_model (event_model )
285
+ except :
286
+ if self .DEBUG :
287
+ print ("MOESIF Can not execute MASK_EVENT_MODEL function. Please check moesif settings." )
272
288
273
- # Skip Event
274
- try :
275
- skip_event = self .moesif_options .get ('SKIP' , None )
276
- if skip_event is not None :
277
- if skip_event (self .event , self .context ):
278
- if self .DEBUG :
279
- print ('MOESIF Skip sending event to Moesif' )
280
- return retval
281
- except :
282
- if self .DEBUG :
283
- print ("MOESIF Having difficulty executing skip_event function. Please check moesif settings." )
289
+ # Skip Event
290
+ try :
291
+ skip_event = self .moesif_options .get ('SKIP' , None )
292
+ if skip_event is not None :
293
+ if skip_event (self .event , self .context ):
294
+ if self .DEBUG :
295
+ print ('MOESIF Skip sending event to Moesif' )
296
+ return retval
297
+ except :
298
+ if self .DEBUG :
299
+ print ("MOESIF Having difficulty executing skip_event function. Please check moesif settings." )
284
300
285
- # Add direction field
286
- event_model .direction = "Incoming"
301
+ # Add direction field
302
+ event_model .direction = "Incoming"
303
+
304
+ # Send event to Moesif
305
+ if self .DEBUG :
306
+ print ('Moesif Event Model:' )
307
+ print (json .dumps (self .event ))
308
+
309
+ event_send = self .api_client .create_event (event_model )
310
+ if self .DEBUG :
311
+ print ('MOESIF ' + str (event_send ))
287
312
288
- # Send event to Moesif
289
- if self .DEBUG :
290
- print ('Moesif Event Model:' )
291
- print (json .dumps (self .event ))
292
-
293
- event_send = self .api_client .create_event (event_model )
294
- if self .DEBUG :
295
- print ('MOESIF ' + str (event_send ))
296
-
297
313
# Send response
298
314
return retval
299
315
0 commit comments