(self, request: Request, call_next: Callable)
| 17 | self.logger = logger |
| 18 | |
| 19 | async def dispatch(self, request: Request, call_next: Callable) -> Response: |
| 20 | start_time = time.time() |
| 21 | body_request = "" |
| 22 | if request.method in ["POST", "PUT", "PATCH"]: |
| 23 | if not hasattr(request.state, "body"): |
| 24 | return await call_next(request) |
| 25 | body = request.state.body |
| 26 | body_request = body.decode("utf-8", errors="ignore") |
| 27 | try: |
| 28 | parsed_json = json.loads(body_request) |
| 29 | parsed_json = filter_params(parsed_json) |
| 30 | body_request = json.dumps(parsed_json, ensure_ascii=False, indent=2) |
| 31 | finally: |
| 32 | pass |
| 33 | try: |
| 34 | response = await call_next(request) |
| 35 | res_body = [section async for section in response.body_iterator] |
| 36 | response.body_iterator = iterate_in_threadpool(iter(res_body)) |
| 37 | body_response = res_body[0].decode() |
| 38 | duration_ms = (time.time() - start_time) * 1000 |
| 39 | self.logger.log_request_full( |
| 40 | request=request, |
| 41 | status_code=response.status_code, |
| 42 | body_request=body_request, |
| 43 | body_response=body_response, |
| 44 | duration_ms=duration_ms, |
| 45 | ) |
| 46 | |
| 47 | return response |
| 48 | |
| 49 | except Exception as e: |
| 50 | duration_ms = (time.time() - start_time) * 1000 |
| 51 | |
| 52 | self.logger.log_request_exception(request=request, e=e, body_request=body_request, duration_ms=duration_ms) |
| 53 | raise e |
nothing calls this directly
no test coverage detected