added debug mode to write requests to disk

This commit is contained in:
Mathieu Broillet 2025-08-28 15:49:26 +02:00
parent 240094d741
commit 7c67f7d180
Signed by: mathieub
GPG Key ID: 4428608CDA3A98D3
3 changed files with 23 additions and 1 deletions

View File

@ -1,10 +1,14 @@
import logging
import os
import xml.etree.ElementTree as ET
from datetime import datetime, timezone, timedelta
from enum import Enum
logger = logging.getLogger("uvicorn")
LOG_REQUESTS = os.getenv("WRITE_REQUESTS") == "1"
LOG_FILE = "requests.log"
class Hosts(str, Enum):
PLEX = "plex.tv"

View File

@ -1,3 +1,4 @@
import os
import xml.etree.ElementTree as ET
from urllib.parse import parse_qs

View File

@ -3,7 +3,7 @@ from fastapi import Request, Depends, HTTPException
from fastapi.responses import Response
from starlette.responses import JSONResponse
from const import Hosts, HOP_BY_HOP_HEADERS, logger
from const import Hosts, HOP_BY_HOP_HEADERS, logger, LOG_REQUESTS, LOG_FILE
from http_client_static_dns import AsyncCustomHost, NameSolver
# Configure upstream client
@ -60,6 +60,23 @@ async def call_official(request: Request, path: str) -> httpx.Response:
}
upstream_response.headers = resp_headers
if LOG_REQUESTS:
with open(LOG_FILE, "a", encoding="utf-8") as f:
f.write(f"{request.method} {request.url}\n")
f.write(f"Request headers: {req_headers}\n")
if body:
try:
f.write(f"Request body: {body.decode('utf-8')}\n")
except UnicodeDecodeError:
f.write(f"Request body: {body}\n")
f.write(f"Response status: {upstream_response.status_code}\n")
f.write(f"Response headers: {resp_headers}\n")
try:
f.write(f"Response body: {upstream_response.text}\n")
except UnicodeDecodeError:
f.write(f"Response body: {upstream_response.content}\n")
f.write("\n---\n\n")
return upstream_response