34 أسطر
892 B
Python
34 أسطر
892 B
Python
import httpx
|
|
from helpers.logger import log
|
|
|
|
|
|
def log_request(req: httpx.Request):
|
|
safe_headers = {
|
|
k: ("<hidden>" 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]},
|
|
)
|