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 .app import summarize_document from .appImage import caption_image app = FastAPI() app.add_middleware( CORSMiddleware, allow_origins=["*"], allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) templates = Jinja2Templates(directory="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)