diff sat/plugins/plugin_comp_ap_gateway/http_server.py @ 3847:aaa4e7815ba8

component AP gateway: new `verbose` attribute in AP gateway to activate debug logs: when verbose is not null, object posted or returned on GET request are logged. Check comments for vebosity level
author Goffi <goffi@goffi.org>
date Thu, 14 Jul 2022 12:55:30 +0200
parents cc13efdd8360
children c0bcbcf5b4b7
line wrap: on
line diff
--- a/sat/plugins/plugin_comp_ap_gateway/http_server.py	Thu Jul 14 12:55:30 2022 +0200
+++ b/sat/plugins/plugin_comp_ap_gateway/http_server.py	Thu Jul 14 12:55:30 2022 +0200
@@ -688,6 +688,20 @@
         request: "HTTPRequest",
         signing_actor: Optional[str] = None
     ) -> None:
+        if self.apg.verbose:
+            try:
+                data = json.load(request.content)
+            except (json.JSONDecodeError, ValueError) as e:
+                pass
+            else:
+                from pprint import pformat
+                log.info(
+                    f"==> got {request.method.decode()} request:\n{pformat(data)}\n---"
+                )
+
+            finally:
+                request.content.seek(0)
+
         path = request.path.decode()
         ap_url = parse.urljoin(
             f"https://{self.apg.public_url}",
@@ -725,6 +739,20 @@
         if ret_data is not None:
             request.setHeader("content-type", CONTENT_TYPE_AP)
             request.write(json.dumps(ret_data).encode())
+            if self.apg.verbose>=2:
+                from pprint import pformat
+                to_log = [f"==> ret (code: {request.code}):\n{pformat(ret_data)}"]
+                log.info(
+
+                )
+                if self.apg.verbose>=3:
+                    headers = "\n".join(
+                        f"    {k.decode()}: {v.decode()}"
+                        for k,v in request.getAllHeaders().items()
+                    )
+                    to_log.append("  headers:\n{headers}")
+                to_log.append("---")
+                log.info("\n".join(to_log))
         request.finish()
 
     async def APPostRequest(self, request: "HTTPRequest"):