blob: d9ea01cc896ca4702d4e55f3f65e4dc509f3dbee (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
from fastapi import FastAPI, Request
from fastapi.responses import HTMLResponse
from starlette.templating import Jinja2Templates
import httpx
app = FastAPI()
templates = Jinja2Templates(directory="templates")
def get_client_host(request: Request):
return request.client.host
async def get_client_geo(client_host: str):
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
@app.get("/", response_class=HTMLResponse)
async def index(request: Request):
return templates.TemplateResponse(
"index.html",
{
"request": request,
"client_geo": await get_client_geo(
get_client_host(request)
)
}
)
|