# utils/boxapi_log.py import json, os, datetime from typing import Any, Dict, Optional LOG_ROOT = os.environ.get("BOXAPI_LOG_DIR", "/app/logs/boxapi") def _ensure_dir(path: str) -> None: os.makedirs(path, exist_ok=True) def log_boxapi_response( username: str, request_payload: Dict[str, Any], status_code: Optional[int], response_json: Optional[Dict[str, Any]] = None, response_text: Optional[str] = None, note: str = "" ) -> str: ts = datetime.datetime.utcnow().strftime("%Y%m%dT%H%M%SZ") safe_user = (username or "unknown").replace("/", "_") dirpath = os.path.join(LOG_ROOT, safe_user) _ensure_dir(dirpath) filepath = os.path.join(dirpath, f"{ts}.json") doc = { "timestamp_utc": ts, "username": username, "status_code": status_code, "note": note, "request_payload": request_payload, # does NOT include API credentials "response_json": response_json, "response_text": response_text if response_json is None else None, } with open(filepath, "w", encoding="utf-8") as f: json.dump(doc, f, ensure_ascii=False, indent=2) return filepath