summaryrefslogtreecommitdiff
path: root/app/utils.py
diff options
context:
space:
mode:
Diffstat (limited to 'app/utils.py')
-rw-r--r--app/utils.py27
1 files changed, 14 insertions, 13 deletions
diff --git a/app/utils.py b/app/utils.py
index 08373e0..22d7058 100644
--- a/app/utils.py
+++ b/app/utils.py
@@ -1,31 +1,32 @@
from pathlib import Path
-from fastapi import Request
+from typing import Annotated
+
+from fastapi import Request, Header, Depends
import httpx
-def get_avatar_urls():
- path = Path('./static') / 'avatars'
+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')
- ])
+ return sorted([str(jpg_avatar) for jpg_avatar in path.glob("*.jpg")])
-def get_client_host(request: Request):
+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: str):
+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"}
+ url="http://ip-api.com/json/{}".format(client_host),
+ params={"lang": "ru"},
)
data = response.json()
return data
-