mirror of
https://github.com/wowlikon/LibraryAPI.git
synced 2025-12-11 21:30:46 +00:00
fixing bugs, changing the handling of dto and db models, preparing to add new functionality
39 lines
1.1 KiB
Python
39 lines
1.1 KiB
Python
from fastapi import APIRouter, Request, FastAPI
|
|
from fastapi.params import Depends
|
|
from fastapi.responses import HTMLResponse, JSONResponse
|
|
from fastapi.templating import Jinja2Templates
|
|
from pathlib import Path
|
|
from datetime import datetime
|
|
from typing import Dict
|
|
|
|
from httpx import get
|
|
|
|
from library_service.settings import get_app
|
|
|
|
# Templates initialization
|
|
templates = Jinja2Templates(directory=Path(__file__).parent.parent / "templates")
|
|
|
|
router = APIRouter(tags=["misc"])
|
|
|
|
# Formatted information about the application
|
|
def get_info(app) -> Dict:
|
|
return {
|
|
"status": "ok",
|
|
"app_info": {
|
|
"title": app.title,
|
|
"version": app.version,
|
|
"description": app.description,
|
|
},
|
|
"server_time": datetime.now().isoformat(),
|
|
}
|
|
|
|
# Root endpoint
|
|
@router.get("/", response_class=HTMLResponse)
|
|
async def root(request: Request, app=Depends(get_app)):
|
|
return templates.TemplateResponse(request, "index.html", get_info(app))
|
|
|
|
# API Information endpoint
|
|
@router.get("/api/info")
|
|
async def api_info(app=Depends(get_app)):
|
|
return JSONResponse(content=get_info(app))
|