diff options
Diffstat (limited to 'app/utils.py')
-rw-r--r-- | app/utils.py | 27 |
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 - |