Spaces:
Sleeping
Sleeping
from fastapi import FastAPI, HTTPException, Request | |
from fastapi.middleware.cors import CORSMiddleware | |
from fastapi.responses import JSONResponse, RedirectResponse | |
import os | |
# Import the router | |
from app.api.routes import router as api_router | |
app = FastAPI( | |
title="AI Content Summariser API", | |
description="An API for summarizing text content and web pages using NLP models", | |
version="1.0.0", | |
docs_url="/docs", | |
redoc_url="/redoc", | |
) | |
# Configure CORS | |
app.add_middleware( | |
CORSMiddleware, | |
allow_origins=[ | |
"https://ai-content-summariser.vercel.app", | |
"http://localhost:3000", | |
], | |
allow_credentials=True, | |
allow_methods=["*"], | |
allow_headers=["*"], | |
) | |
# Include the router | |
app.include_router(api_router) | |
async def root(): | |
""" | |
Root endpoint that provides information about the API and available endpoints. | |
""" | |
return { | |
"name": "AI Content Summariser API", | |
"version": "1.0.0", | |
"description": "API for summarizing text content and web pages using NLP models", | |
"endpoints": { | |
"documentation": "/docs", | |
"alternative_docs": "/redoc", | |
"health_check": "/health", | |
"api_endpoints": { | |
"summarise_text": "/api/summarise", | |
"summarise_url": "/api/summarise-url", | |
"status": "/api/status" | |
} | |
}, | |
"github_repository": "https://github.com/dang-w/ai-content-summariser-api", | |
"frontend_application": "https://ai-content-summariser.vercel.app" | |
} | |
async def docs_redirect(): | |
""" | |
Redirects to the API documentation. | |
""" | |
return RedirectResponse(url="/docs") | |
async def health_check(): | |
return {"status": "healthy"} | |
# Global exception handler for better error responses | |
async def global_exception_handler(request: Request, exc: Exception): | |
return JSONResponse( | |
status_code=500, | |
content={"detail": f"An unexpected error occurred: {str(exc)}"} | |
) | |
if __name__ == "__main__": | |
import uvicorn | |
uvicorn.run(app, host="0.0.0.0", port=int(os.environ.get("PORT", 8000))) | |