From 53c88a79ac9ff169b86fdf7330b8620a1b5b177d Mon Sep 17 00:00:00 2001 From: Oscar Krause Date: Fri, 22 Nov 2024 14:16:10 +0100 Subject: [PATCH] improved logging and implemented method to reduce response mac_address_length --- app/middleware.py | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/app/middleware.py b/app/middleware.py index 998474b..db97bb0 100644 --- a/app/middleware.py +++ b/app/middleware.py @@ -22,20 +22,40 @@ class PatchMalformedJsonMiddleware(BaseHTTPMiddleware): content_type = request.headers.get('Content-Type') if self.enabled and content_type == 'application/json': + logger.debug(f'Using Request-Patch because "PatchMalformedJsonMiddleware" is enabled!') + + # try to fix json body = body.decode() try: - json.loads(body) + j = json.loads(body) + self.fix_mac_address_list_length(j=j, size=1) except json.decoder.JSONDecodeError: - logger.warning(f'Malformed json received! Try to fix it, "PatchMalformedJsonMiddleware" is enabled.') + logger.warning(f'Malformed json received! Try to fix it.') s = PatchMalformedJsonMiddleware.fix_json(body) logger.debug(f'Fixed JSON: "{s}"') - s = json.loads(s) # ensure json is now valid + j = json.loads(s) # ensure json is now valid + j = self.fix_mac_address_list_length(j=j, size=1) # set new body - request._body = json.dumps(s).encode('utf-8') + request._body = json.dumps(j).encode('utf-8') response = await call_next(request) return response + def fix_mac_address_list_length(self, j: dict, size: int = 1) -> dict: + if not self.enabled: + return j + + # reduce "mac_address_list" to + environment = j.get('environment', {}) + fingerprint = environment.get('fingerprint', {}) + mac_address = fingerprint.get('mac_address_list', []) + + if len(mac_address) > 0: + logger.info(f'Transforming "mac_address_list" to length of {size}.') + j['environment']['fingerprint']['mac_address_list'] = mac_address[:size] + + return j + @staticmethod def fix_json(s: str) -> str: s = s.replace('\t', '')