import httpx from helpers.logger import log def log_request(req: httpx.Request): safe_headers = { k: ("" if k.lower() == "authorization" else v) for k, v in req.headers.items() } log.info(f"=> {req.method} {req.url}") log.debug(f"Headers: {safe_headers}") try: log.debug(f"Body: {req.content.decode()[:1000]}") except Exception: pass def log_response(res: httpx.Response): log.info(f"<= {res.status_code} {res.request.method} {res.request.url}") try: if res.status_code >= 400: content = res.read() log.debug(f"Response: {content.decode()[:2000]}") except Exception: pass def build_client() -> httpx.Client: return httpx.Client( follow_redirects=False, timeout=120.0, event_hooks={"request": [log_request], "response": [log_response]}, )