Dan Walsh
Add root endpoint with API information and documentation links
c6df052
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)
@app.get("/", include_in_schema=True)
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"
}
@app.get("/docs-redirect")
async def docs_redirect():
"""
Redirects to the API documentation.
"""
return RedirectResponse(url="/docs")
@app.get("/health")
async def health_check():
return {"status": "healthy"}
# Global exception handler for better error responses
@app.exception_handler(Exception)
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)))