summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorStas Medvedev <medvedevsa97@gmail.com>2024-06-12 16:05:12 +0300
committerStas Medvedev <medvedevsa97@gmail.com>2024-06-12 16:05:12 +0300
commited49bb17b9e93a1406ab51f7dca5906661863627 (patch)
treefd5dfa78e46c9b29dcd1fdaf3897fbd117cf7c2b /app
parent3805407b0868aeccf7462a68c1d86540764bc02f (diff)
refactore utils
refactore html about, client_geo
Diffstat (limited to 'app')
-rw-r--r--app/main.py18
-rw-r--r--app/utils.py32
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