comparison sat/plugins/plugin_comp_ap_gateway/http_server.py @ 3881:2e4a0f6050bd

component AP gateway: better verbose logging: gather data to show according to verbosity and log it all at once with a small `<<<` or `>>>` indicating the direction. With a verbosity of 3, headers are also shown.
author Goffi <goffi@goffi.org>
date Wed, 31 Aug 2022 17:07:03 +0200
parents bd84d289fc94
children 1bd44367337d
comparison
equal deleted inserted replaced
3880:03761f8ba8bb 3881:2e4a0f6050bd
819 self, 819 self,
820 request: "HTTPRequest", 820 request: "HTTPRequest",
821 signing_actor: Optional[str] = None 821 signing_actor: Optional[str] = None
822 ) -> None: 822 ) -> None:
823 if self.apg.verbose: 823 if self.apg.verbose:
824 from pprint import pformat
825 to_log = [
826 "",
827 f"<<< got {request.method.decode()} request - {request.uri.decode()}"
828 ]
824 try: 829 try:
825 data = json.load(request.content) 830 data = json.load(request.content)
826 except (json.JSONDecodeError, ValueError) as e: 831 except (json.JSONDecodeError, ValueError):
827 pass 832 pass
828 else: 833 else:
829 from pprint import pformat 834 to_log.append(pformat(data))
830 log.info(
831 f"==> got {request.method.decode()} request:\n{pformat(data)}\n---"
832 )
833
834 finally: 835 finally:
835 request.content.seek(0) 836 request.content.seek(0)
837 if self.apg.verbose>=3:
838 headers = "\n".join(
839 f" {k.decode()}: {v.decode()}"
840 for k,v in request.getAllHeaders().items()
841 )
842 to_log.append(f" headers:\n{headers}")
836 843
837 path = request.path.decode() 844 path = request.path.decode()
838 ap_url = parse.urljoin( 845 ap_url = parse.urljoin(
839 f"https://{self.apg.public_url}", 846 f"https://{self.apg.public_url}",
840 path 847 path
869 request, account_jid, node, ap_account, ap_url, signing_actor 876 request, account_jid, node, ap_account, ap_url, signing_actor
870 ) 877 )
871 if ret_data is not None: 878 if ret_data is not None:
872 request.setHeader("content-type", CONTENT_TYPE_AP) 879 request.setHeader("content-type", CONTENT_TYPE_AP)
873 request.write(json.dumps(ret_data).encode()) 880 request.write(json.dumps(ret_data).encode())
881 if self.apg.verbose:
882 to_log.append(f"--- RET (code: {request.code})---")
874 if self.apg.verbose>=2: 883 if self.apg.verbose>=2:
875 from pprint import pformat 884 if ret_data is not None:
876 to_log = [f"==> ret (code: {request.code}):\n{pformat(ret_data)}"] 885 to_log.append(f"{pformat(ret_data)}")
877 log.info( 886 to_log.append("---")
878 887 log.info("\n".join(to_log))
879 )
880 if self.apg.verbose>=3:
881 headers = "\n".join(
882 f" {k.decode()}: {v.decode()}"
883 for k,v in request.getAllHeaders().items()
884 )
885 to_log.append(" headers:\n{headers}")
886 to_log.append("---")
887 log.info("\n".join(to_log))
888 request.finish() 888 request.finish()
889 889
890 async def APPostRequest(self, request: "HTTPRequest"): 890 async def APPostRequest(self, request: "HTTPRequest"):
891 try: 891 try:
892 signing_actor = await self.checkSignature(request) 892 signing_actor = await self.checkSignature(request)