@@ -52,14 +52,23 @@ def __init__(self, handler):
5252 self .DEBUG = self .moesif_options .get ('DEBUG' , False )
5353 self .event = None
5454 self .context = None
55- self .start_time = datetime .utcnow ()
5655
5756 # Intialized the client
5857 if os .environ .get ("MOESIF_APPLICATION_ID" ):
5958 self .api_client = MoesifAPIClient (os .environ ["MOESIF_APPLICATION_ID" ]).api
6059 else :
6160 raise Exception ('Moesif Application ID is required in settings' )
6261
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+
6372 def get_user_id (self , event , context ):
6473 """Function to fetch UserId"""
6574 username = None
@@ -130,10 +139,19 @@ def process_body(self, body_wrapper):
130139 def before (self , event , context ):
131140 """This function runs before the handler is invoked, is passed the event & context and must return an event & context too."""
132141
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+
133149 # Request Method
134150 request_verb = event .get ('httpMethod' )
135151 if request_verb is None :
136152 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
137155 return event , context
138156
139157 # Request headers
@@ -149,9 +167,9 @@ def before(self, event, context):
149167 # Request Time
150168 epoch = event and event .get ('request_context' , {}).get ('requestTimeEpoch' )
151169 if epoch is not None :
152- request_time = datetime .utcfromtimestamp (epoch )
170+ request_time = datetime .utcfromtimestamp (epoch )
153171 else :
154- request_time = self . start_time
172+ request_time = datetime . utcnow ()
155173
156174 # Request Body
157175 req_body , req_transfer_encoding = self .process_body (event )
@@ -234,66 +252,64 @@ def before(self, event, context):
234252 body = req_body ,
235253 transfer_encoding = req_transfer_encoding )
236254
237- # Set/Save event and context for use Skip Event function
238- self .event = event
239- self .context = context
240-
241255 # Return event, context
242256 return event , context
243257
244258 def after (self , retval ):
245259 """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 )
248264
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 )
255271
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." )
272288
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." )
284300
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 ))
287312
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-
297313 # Send response
298314 return retval
299315
0 commit comments