Skip to content

Commit

Permalink
Merge pull request #14 from Moesif/develop
Browse files Browse the repository at this point in the history
fixed incorrect elapsed time duration, and bump up version (#13)
  • Loading branch information
praves77 authored Sep 26, 2022
2 parents 12bd51f + 23b3042 commit 9e903d7
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 13 deletions.
12 changes: 2 additions & 10 deletions moesifasgi/event_mapper.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,6 @@ def __init__(self):
self.client_ip = ClientIp()
self.transaction_id = None

@classmethod
def get_time(cls):
return datetime.utcnow().strftime("%Y-%m-%dT%H:%M:%S.%f")[:-3]

async def to_event(self, request, response, event_req, event_rsp, moesif_settings, debug):
return EventModel(request=event_req,
response=event_rsp,
Expand All @@ -26,9 +22,7 @@ async def to_event(self, request, response, event_req, event_rsp, moesif_setting
metadata=await self.logger_helper.get_metadata(moesif_settings, request, response, debug),
direction="Incoming")

def to_request(self, request, request_body, api_version, disable_capture_transaction_id):
# Request time
request_time = self.get_time()
def to_request(self, request, request_time, request_body, api_version, disable_capture_transaction_id):
# Request URI
request_uri = request.url._url
# Request Verb
Expand Down Expand Up @@ -63,9 +57,7 @@ def to_request(self, request, request_body, api_version, disable_capture_transac
body=req_body,
transfer_encoding=req_transfer_encoding)

def to_response(self, response, response_body):
# Response time
response_time = self.get_time()
def to_response(self, response, response_time, response_body):
# Response Status code
response_status = response.status_code
# Response Headers
Expand Down
18 changes: 16 additions & 2 deletions moesifasgi/middleware.py
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,16 @@ async def get_body(self, request: Request) -> bytes:
self.set_body(request, body)
return body

@classmethod
def get_time(cls):
return datetime.utcnow().strftime("%Y-%m-%dT%H:%M:%S.%f")[:-3]

async def dispatch(self, request, call_next):
# request time
request_time = self.get_time()
if self.DEBUG:
print("event request time: ", request_time)

# Read Request Body
request_body = None
if self.LOG_BODY:
Expand All @@ -153,6 +162,11 @@ async def dispatch(self, request, call_next):
# Call the next middleware
response = await call_next(request)

# response time
response_time = self.get_time()
if self.DEBUG:
print("event response time: ", response_time)

skip = await self.logger_helper.should_skip(self.moesif_settings, request, response, self.DEBUG)
if not skip:
random_percentage = random.random() * 100
Expand All @@ -163,7 +177,7 @@ async def dispatch(self, request, call_next):

if self.sampling_percentage >= random_percentage:
# Prepare Event Request Model
event_req = self.event_mapper.to_request(request, request_body, self.api_version, self.disable_transaction_id)
event_req = self.event_mapper.to_request(request, request_time, request_body, self.api_version, self.disable_transaction_id)

# Read Response Body
resp_body = None
Expand All @@ -174,7 +188,7 @@ async def dispatch(self, request, call_next):
response.__setattr__('body_iterator', async_iterator_wrapper(resp_body))

# Prepare Event Response Model
event_rsp = self.event_mapper.to_response(response, resp_body)
event_rsp = self.event_mapper.to_response(response, response_time, resp_body)
# Prepare Event Model
event_data = await self.event_mapper.to_event(request, response, event_req, event_rsp, self.moesif_settings,
self.DEBUG)
Expand Down
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
# Versions should comply with PEP440. For a discussion on single-sourcing
# the version across setup.py and the project code, see
# https://packaging.python.org/en/latest/single_source_version.html
version='0.1.2',
version='0.1.3',

description='Moesif Middleware for Python ASGI based platforms (FastAPI & Others)',
long_description=long_description,
Expand Down

0 comments on commit 9e903d7

Please sign in to comment.