iTagPDF / backend /main.py
peyajm
Add itagpdf.com to CORS allowed origins
5c529ab
Raw
History Blame
2.08 kB
"""
FastAPI application entry point for the PDF Accessibility Pipeline web interface.
"""
from contextlib import asynccontextmanager
import os
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from routes import upload, pipeline, elements, visualizations, download, stages, auth, sessions
@asynccontextmanager
async def lifespan(app: FastAPI):
import database
database.init_db()
from config import PIPELINE_DIR, JAR_PATH, YOLO_MODEL_PATH
checks = [
(PIPELINE_DIR.is_dir(), f"PIPELINE_DIR : {PIPELINE_DIR}"),
(JAR_PATH.exists(), f"pdftagger.jar : {JAR_PATH}"),
(YOLO_MODEL_PATH.exists(), f"YOLO model : {YOLO_MODEL_PATH}"),
]
for ok, label in checks:
print(f"[startup] {'OK ' if ok else 'MISSING'} {label}", flush=True)
yield
app = FastAPI(title="PDF Accessibility Pipeline API", version="0.1.0", lifespan=lifespan)
# CORS — allow the Vite dev server, local React app, and any configured public origins
_extra_origins = [
o.strip()
for o in os.environ.get("CORS_ORIGINS", "").split(",")
if o.strip()
]
app.add_middleware(
CORSMiddleware,
allow_origins=[
"http://localhost:5173",
"http://localhost:3000",
"https://itagpdf.com",
"https://www.itagpdf.com",
*_extra_origins,
],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
# Routers
app.include_router(upload.router, prefix="/api")
app.include_router(pipeline.router, prefix="/api")
app.include_router(elements.router, prefix="/api")
app.include_router(visualizations.router, prefix="/api")
app.include_router(download.router, prefix="/api")
app.include_router(stages.router, prefix="/api")
app.include_router(auth.router, prefix="/api")
app.include_router(sessions.router, prefix="/api")
@app.get("/api/health")
async def health():
return {"status": "ok"}
if __name__ == "__main__":
import uvicorn
from config import BACKEND_PORT
uvicorn.run("main:app", host="0.0.0.0", port=BACKEND_PORT, reload=True)