dane w headerach i inne funkcje

This commit is contained in:
Mateusz Gruszczyński
2025-10-09 17:01:54 +02:00
parent 72c69c3d42
commit ca55b48d24

View File

@@ -1,5 +1,5 @@
from fastapi import FastAPI, Request, Response from fastapi import FastAPI, Request, Response
from fastapi.responses import PlainTextResponse from fastapi.responses import JSONResponse, PlainTextResponse
from starlette.middleware.base import BaseHTTPMiddleware from starlette.middleware.base import BaseHTTPMiddleware
from .deps import get_geo from .deps import get_geo
from .api import get_client_ip, router from .api import get_client_ip, router
@@ -38,14 +38,18 @@ async def favicon():
return Response(status_code=204) return Response(status_code=204)
@app.get("/") @app.api_route("/", methods=["GET", "HEAD"])
async def root(request: Request): async def root(request: Request):
ua = request.headers.get("user-agent", "").lower() ua = request.headers.get("user-agent", "").lower()
ip = get_client_ip(request).strip() ip = get_client_ip(request).strip()
if any(x in ua for x in ["mozilla", "chrome", "safari", "edge", "firefox"]): if any(x in ua for x in ["mozilla", "chrome", "safari", "edge", "firefox"]):
if request.method == "HEAD":
return Response(status_code=404)
return JSONResponse({"detail": "Not Found"}, status_code=404) return JSONResponse({"detail": "Not Found"}, status_code=404)
if request.method == "HEAD":
return Response(status_code=200)
return PlainTextResponse(ip + "\n") return PlainTextResponse(ip + "\n")