health check
This commit is contained in:
5
src/server/controllers/__init__.py
Normal file
5
src/server/controllers/__init__.py
Normal file
@@ -0,0 +1,5 @@
|
||||
"""
|
||||
Controllers package for FastAPI application.
|
||||
|
||||
This package contains route controllers organized by functionality.
|
||||
"""
|
||||
39
src/server/controllers/error_controller.py
Normal file
39
src/server/controllers/error_controller.py
Normal file
@@ -0,0 +1,39 @@
|
||||
"""
|
||||
Error handler controller for managing application exceptions.
|
||||
|
||||
This module provides custom error handlers for different HTTP status codes.
|
||||
"""
|
||||
from fastapi import HTTPException, Request
|
||||
from fastapi.responses import JSONResponse
|
||||
|
||||
from src.server.utils.templates import templates
|
||||
|
||||
|
||||
async def not_found_handler(request: Request, exc: HTTPException):
|
||||
"""Custom 404 handler."""
|
||||
if request.url.path.startswith("/api/"):
|
||||
return JSONResponse(
|
||||
status_code=404,
|
||||
content={"detail": "API endpoint not found"}
|
||||
)
|
||||
return templates.TemplateResponse(
|
||||
"error.html",
|
||||
{"request": request, "error": "Page not found", "status_code": 404}
|
||||
)
|
||||
|
||||
|
||||
async def server_error_handler(request: Request, exc: Exception):
|
||||
"""Custom 500 handler."""
|
||||
if request.url.path.startswith("/api/"):
|
||||
return JSONResponse(
|
||||
status_code=500,
|
||||
content={"detail": "Internal server error"}
|
||||
)
|
||||
return templates.TemplateResponse(
|
||||
"error.html",
|
||||
{
|
||||
"request": request,
|
||||
"error": "Internal server error",
|
||||
"status_code": 500
|
||||
}
|
||||
)
|
||||
31
src/server/controllers/health_controller.py
Normal file
31
src/server/controllers/health_controller.py
Normal file
@@ -0,0 +1,31 @@
|
||||
"""
|
||||
Health check controller for monitoring and status endpoints.
|
||||
|
||||
This module provides health check endpoints for application monitoring.
|
||||
"""
|
||||
from typing import Optional
|
||||
|
||||
from fastapi import APIRouter
|
||||
|
||||
from src.core.SeriesApp import SeriesApp
|
||||
|
||||
router = APIRouter(prefix="/health", tags=["health"])
|
||||
|
||||
|
||||
def get_series_app() -> Optional[SeriesApp]:
|
||||
"""Get the current SeriesApp instance."""
|
||||
# This will be replaced with proper dependency injection
|
||||
from src.server.fastapi_app import series_app
|
||||
return series_app
|
||||
|
||||
|
||||
@router.get("")
|
||||
async def health_check():
|
||||
"""Health check endpoint for monitoring."""
|
||||
series_app = get_series_app()
|
||||
return {
|
||||
"status": "healthy",
|
||||
"service": "aniworld-api",
|
||||
"version": "1.0.0",
|
||||
"series_app_initialized": series_app is not None
|
||||
}
|
||||
47
src/server/controllers/page_controller.py
Normal file
47
src/server/controllers/page_controller.py
Normal file
@@ -0,0 +1,47 @@
|
||||
"""
|
||||
Page controller for serving HTML templates.
|
||||
|
||||
This module provides endpoints for serving HTML pages using Jinja2 templates.
|
||||
"""
|
||||
from fastapi import APIRouter, Request
|
||||
from fastapi.responses import HTMLResponse
|
||||
|
||||
from src.server.utils.templates import templates
|
||||
|
||||
router = APIRouter(tags=["pages"])
|
||||
|
||||
|
||||
@router.get("/", response_class=HTMLResponse)
|
||||
async def root(request: Request):
|
||||
"""Serve the main application page."""
|
||||
return templates.TemplateResponse(
|
||||
"index.html",
|
||||
{"request": request, "title": "Aniworld Download Manager"}
|
||||
)
|
||||
|
||||
|
||||
@router.get("/setup", response_class=HTMLResponse)
|
||||
async def setup_page(request: Request):
|
||||
"""Serve the setup page."""
|
||||
return templates.TemplateResponse(
|
||||
"setup.html",
|
||||
{"request": request, "title": "Setup - Aniworld"}
|
||||
)
|
||||
|
||||
|
||||
@router.get("/login", response_class=HTMLResponse)
|
||||
async def login_page(request: Request):
|
||||
"""Serve the login page."""
|
||||
return templates.TemplateResponse(
|
||||
"login.html",
|
||||
{"request": request, "title": "Login - Aniworld"}
|
||||
)
|
||||
|
||||
|
||||
@router.get("/queue", response_class=HTMLResponse)
|
||||
async def queue_page(request: Request):
|
||||
"""Serve the download queue page."""
|
||||
return templates.TemplateResponse(
|
||||
"queue.html",
|
||||
{"request": request, "title": "Download Queue - Aniworld"}
|
||||
)
|
||||
Reference in New Issue
Block a user