aded
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
import os
|
||||
from typing import Optional
|
||||
from fastapi import FastAPI, HTTPException, Security, Depends
|
||||
from fastapi import FastAPI, HTTPException, Security, Depends, Request
|
||||
from fastapi.security import APIKeyHeader
|
||||
from fastapi.middleware.cors import CORSMiddleware
|
||||
from fastapi.responses import JSONResponse
|
||||
@@ -27,9 +27,23 @@ import os
|
||||
from PyPDF2 import PdfReader
|
||||
from config import QUIZ_TYPES
|
||||
from config import Config
|
||||
import logging
|
||||
import time
|
||||
# Load environment variables
|
||||
load_dotenv()
|
||||
API_KEY = os.getenv("API_KEY_ACCESS")
|
||||
from config import Config
|
||||
API_KEY = Config.API_KEY_ACCESS
|
||||
|
||||
# Configure logging
|
||||
logging.basicConfig(
|
||||
level=logging.INFO,
|
||||
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'
|
||||
)
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
# Also configure uvicorn logger
|
||||
uvicorn_logger = logging.getLogger("uvicorn.access")
|
||||
uvicorn_logger.setLevel(logging.INFO)
|
||||
|
||||
base_path = os.path.join("data", "config_files")
|
||||
QUESTIONS_PATH = os.path.join(base_path, "questions.json")
|
||||
@@ -46,6 +60,42 @@ app = FastAPI(
|
||||
version="1.0.0"
|
||||
)
|
||||
|
||||
# Add request logging middleware
|
||||
@app.middleware("http")
|
||||
async def log_requests(request: Request, call_next):
|
||||
start_time = time.time()
|
||||
|
||||
# Log incoming request (using both logger and print for visibility)
|
||||
log_msg = f"🔥 INCOMING REQUEST: {request.method} {request.url}"
|
||||
logger.info(log_msg)
|
||||
print(log_msg)
|
||||
|
||||
headers_msg = f"🔥 Headers: {dict(request.headers)}"
|
||||
logger.info(headers_msg)
|
||||
print(headers_msg)
|
||||
|
||||
# Get request body for POST requests
|
||||
if request.method == "POST":
|
||||
body = await request.body()
|
||||
body_msg = f"🔥 Request Body: {body.decode('utf-8') if body else 'Empty'}"
|
||||
logger.info(body_msg)
|
||||
print(body_msg)
|
||||
|
||||
# Re-create request with body for downstream processing
|
||||
async def receive():
|
||||
return {"type": "http.request", "body": body}
|
||||
request._receive = receive
|
||||
|
||||
response = await call_next(request)
|
||||
|
||||
# Log response
|
||||
process_time = time.time() - start_time
|
||||
response_msg = f"🔥 RESPONSE: {response.status_code} - Time: {process_time:.4f}s"
|
||||
logger.info(response_msg)
|
||||
print(response_msg)
|
||||
|
||||
return response
|
||||
|
||||
# Add CORS middleware
|
||||
app.add_middleware(
|
||||
CORSMiddleware,
|
||||
@@ -288,7 +338,7 @@ async def generate_pdf_endpoint(
|
||||
if request.form_id:
|
||||
print(f"Fetching form response for form_id: {request.form_id}") # Debugging print
|
||||
try:
|
||||
x_api_key = os.getenv("BACKEND_XAPI_KEY")
|
||||
x_api_key = Config.BACKEND_XAPI_KEY
|
||||
url = f"{backend_base_url}/v3/api/custom/theme-document/answer/{request.form_id}?x-project={x_api_key}"
|
||||
result = requests.get(url)
|
||||
result.raise_for_status() # Ensure we raise an error for bad responses
|
||||
|
||||
Reference in New Issue
Block a user