File size: 1,885 Bytes
64daaca
 
8b84edc
84ef14b
 
64daaca
 
 
 
 
2918218
d92713e
 
8b84edc
 
 
 
 
 
 
 
 
64daaca
84ef14b
 
64daaca
84ef14b
 
64daaca
84ef14b
64daaca
 
 
8b84edc
64daaca
 
8b84edc
64daaca
8b84edc
64daaca
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# main.py
from fastapi import FastAPI, UploadFile, File, Form, Request
from fastapi.responses import HTMLResponse, JSONResponse, FileResponse
from fastapi.staticfiles import StaticFiles
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=["*"],
)

app.mount("/static", StaticFiles(directory="static"), name="static")
app.mount("/resources", StaticFiles(directory="resources"), name="resources")
templates = Jinja2Templates(directory="templates")

# Serve homepage
@app.get("/", response_class=HTMLResponse)
async def serve_home(request: Request):
    return templates.TemplateResponse("HomeS.html", {"request": request})

# Document summarization endpoint
@app.post("/summarize/")
async def summarize(file: UploadFile = File(...), length: str = Form("medium")):
    try:
        result = await summarize_document(file, length)
        return JSONResponse(result)
    except Exception as e:
        return JSONResponse({"error": f"Summarization failed: {str(e)}"}, status_code=500)

# Image captioning endpoint
@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)

# Serve audio/pdf generated
@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)