from fastapi import FastAPI, UploadFile, File, Form, Request from fastapi.responses import HTMLResponse, JSONResponse, FileResponse from fastapi.templating import Jinja2Templates from fastapi.middleware.cors import CORSMiddleware import tempfile, os from pathlib import Path from .app import summarize_document from .appImage import caption_image app = FastAPI() app.add_middleware( CORSMiddleware, allow_origins=["*"], allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) # ✅ Fixed: Dynamic template path resolution current_dir = Path(__file__).parent templates = Jinja2Templates(directory=current_dir.parent / "templates") @app.get("/", response_class=HTMLResponse) async def serve_home(request: Request): return templates.TemplateResponse("HomeS.html", {"request": request}) @app.post("/summarize/") async def summarize_api(file: UploadFile = File(...), length: str = Form("medium")): try: result = await summarize_document(file, length) return JSONResponse(result) except Exception as e: return JSONResponse({"detail": f"Internal server error: {str(e)}"}, status_code=500) @app.post("/imagecaption/") async def caption(file: UploadFile = File(...)): try: result = await caption_image(file) return JSONResponse(result) except Exception as e: return JSONResponse({"error": f"Image captioning failed: {str(e)}"}, status_code=500) @app.get("/files/{filename}") async def serve_file(filename: str): filepath = os.path.join(tempfile.gettempdir(), filename) if os.path.exists(filepath): return FileResponse(filepath) return JSONResponse({"error": "File not found"}, status_code=404)