from typing import Annotated from fastapi import FastAPI, Request, Depends from fastapi.responses import HTMLResponse from fastapi.staticfiles import StaticFiles from starlette.templating import Jinja2Templates from utils import get_avatar_urls, get_client_geo templates = Jinja2Templates(directory="templates") app = FastAPI() app.mount("/static", StaticFiles(directory="static"), name="static") @app.get("/", response_class=HTMLResponse) async def index( request: Request, avatar_urls: Annotated[list[str], Depends(get_avatar_urls)], ): return templates.TemplateResponse( "index.html", {"request": request, "avatar_urls": avatar_urls}, ) @app.get("/client_geo", response_class=HTMLResponse) async def client_addr( request: Request, client_geo: Annotated[dict, Depends(get_client_geo)], ): return templates.TemplateResponse( "partials/client_geo.html", {"request": request, "client_geo": client_geo}, )