diff --git a/app/api.py b/app/api.py index d99bc8f..5db1c67 100644 --- a/app/api.py +++ b/app/api.py @@ -159,21 +159,24 @@ def get_client_ip(request: Request) -> str: return "0.0.0.0" -@router.get("/ip") +@router.api_route('/ip', methods=["GET", "HEAD"]) async def my_ip(request: Request, geo=Depends(get_geo)): - ip = get_client_ip(request) - data = geo.lookup(ip) - return Response( - content=data.__str__(), media_type="application/json", headers=geo_headers(data) - ) + ip = get_client_ip(request) # pobieranie IP:contentReference[oaicite:0]{index=0} + data = geo.lookup(ip) # geo lookup:contentReference[oaicite:1]{index=1}:contentReference[oaicite:2]{index=2} + headers = _geo_headers(data) + if request.method == "HEAD": + return Response(status_code=200, headers=headers) + body = json.dumps(data, ensure_ascii=False) + "\n" + return Response(content=body, media_type="application/json", headers=headers) - -@router.get("/ip/{ip_address}") +@router.api_route('/ip/{ip_address}', methods=["GET", "HEAD"]) async def ip_lookup(ip_address: str, geo=Depends(get_geo)): data = geo.lookup(ip_address) - return Response( - content=data.__str__(), media_type="application/json", headers=geo_headers(data) - ) + headers = _geo_headers(data) + if request.method == "HEAD": + return Response(status_code=200, headers=headers) + body = json.dumps(data, ensure_ascii=False) + "\n" + return Response(content=body, media_type="application/json", headers=headers) @router.post("/reload") diff --git a/app/main.py b/app/main.py index 5b5c36f..13086c2 100644 --- a/app/main.py +++ b/app/main.py @@ -41,7 +41,7 @@ async def favicon(): @app.get("/") async def root(request: Request): ua = request.headers.get("user-agent", "").lower() - ip = get_client_ip(request) + ip = get_client_ip(request).strip() if any(x in ua for x in ["mozilla", "chrome", "safari", "edge", "firefox"]): return Response(status_code=404)