"""
FastAPI routing configuration.
Maps incoming HTTP requests to the FastAPIProxyRedirect class.
"""

from fastapi import FastAPI, Request, Response

from logger import debug_log

from fast_api import FastAPIProxyRedirect

app = FastAPI()


@app.get("/authelia-auth")
async def auth_passthrough():
    """
    Explicitly handle authelia-auth if Nginx accidentally routes here.
    Returning a 401 triggers the redirect logic in Nginx properly.
    """
    # Redirect  https://auth.jasonpoage.com/?rd=$scheme://$host$request_uri;
    return Response(status_code=200)


@app.get("/{full_path:path}")
async def proxy_handler(request: Request):
    """
    Catch-all route that passes the request to the proxy logic and returns the response.
    """
    proxy = FastAPIProxyRedirect(request)

    return proxy.get_response()
