diff options
author | Stas Medvedev <medvedevsa97@gmail.com> | 2024-06-12 16:05:12 +0300 |
---|---|---|
committer | Stas Medvedev <medvedevsa97@gmail.com> | 2024-06-12 16:05:12 +0300 |
commit | ed49bb17b9e93a1406ab51f7dca5906661863627 (patch) | |
tree | fd5dfa78e46c9b29dcd1fdaf3897fbd117cf7c2b /app | |
parent | 3805407b0868aeccf7462a68c1d86540764bc02f (diff) |
refactore utils
refactore html about, client_geo
Diffstat (limited to 'app')
-rw-r--r-- | app/main.py | 18 | ||||
-rw-r--r-- | app/utils.py | 32 |
2 files changed, 12 insertions, 38 deletions
diff --git a/app/main.py b/app/main.py index 7cf756c..59e7a8b 100644 --- a/app/main.py +++ b/app/main.py @@ -5,8 +5,7 @@ from fastapi.responses import HTMLResponse from fastapi.staticfiles import StaticFiles from starlette.templating import Jinja2Templates -from app.utils import get_avatar_urls, get_client_geo -from app.logging import logger +from utils import get_avatar_urls, get_client_geo templates = Jinja2Templates(directory="templates") @@ -17,13 +16,20 @@ app.mount("/static", StaticFiles(directory="static"), name="static") @app.get("/", response_class=HTMLResponse) async def index( request: Request, - client_geo: Annotated[dict, Depends(get_client_geo)], avatar_urls: Annotated[list[str], Depends(get_avatar_urls)], ): + return templates.TemplateResponse( + "index.html", + {"request": request, "avatar_urls": avatar_urls}, + ) - logger.info(str(dict(request.headers))) +@app.get("/client_geo", response_class=HTMLResponse) +async def client_addr( + request: Request, + client_geo: Annotated[dict, Depends(get_client_geo)], +): return templates.TemplateResponse( - "index.html", - {"request": request, "client_geo": client_geo, "avatar_urls": avatar_urls}, + "partials/client_geo.html", + {"request": request, "client_geo": client_geo}, ) diff --git a/app/utils.py b/app/utils.py deleted file mode 100644 index 22d7058..0000000 --- a/app/utils.py +++ /dev/null @@ -1,32 +0,0 @@ -from pathlib import Path -from typing import Annotated - -from fastapi import Request, Header, Depends -import httpx - - -def get_avatar_urls() -> list[str]: - path = Path("./static") / "avatars" - if not path.exists(): - path.mkdir() - - return sorted([str(jpg_avatar) for jpg_avatar in path.glob("*.jpg")]) - - -def get_client_host( - request: Request, x_real_ip: Annotated[str | None, Header()] = None -) -> str: - if x_real_ip: - return x_real_ip - return request.client.host - - -async def get_client_geo(client_host: Annotated[str, Depends(get_client_host)]) -> dict: - async with httpx.AsyncClient() as client: - response = await client.get( - # использование https платная опция сервиса, инфо тут https://members.ip-api.com/ - url="http://ip-api.com/json/{}".format(client_host), - params={"lang": "ru"}, - ) - data = response.json() - return data |