Files
ad/molodetz/routers/legacy.py
T

59 lines
1.5 KiB
Python

# retoor <retoor@molodetz.nl>
from fastapi import APIRouter, Request
from fastapi.responses import RedirectResponse
router = APIRouter(include_in_schema=False)
LEGACY_PATHS = {
"/rol": "/roll",
"/standaard": "/standard",
"/mensen": "/people",
"/binnen": "/join",
"/voorwaarden": "/terms",
"/docs/welkom": "/docs/welcome",
"/docs/schrijven": "/docs/writing",
"/docs/binnen": "/docs/join",
"/docs/juridisch": "/docs/legal",
"/docs/architectuur": "/docs/architecture",
"/docs/beheer": "/docs/admin",
"/docs/api/inhoud": "/docs/api/content",
"/docs/api/binnen": "/docs/api/join",
"/docs/api/beheer": "/docs/api/admin",
}
def _target(request, path):
query = request.url.query
return f"{path}?{query}" if query else path
def _redirect(request, path):
status = 301 if request.method in ("GET", "HEAD") else 308
return RedirectResponse(_target(request, path), status_code=status)
@router.get("/mensen/{username}")
async def legacy_person(request: Request, username: str):
return _redirect(request, f"/people/{username}")
@router.post("/binnen")
async def legacy_join_post(request: Request):
return _redirect(request, "/join")
@router.post("/voorwaarden/accept")
async def legacy_terms_accept(request: Request):
return _redirect(request, "/terms/accept")
def _make_handler(target):
async def handler(request: Request):
return _redirect(request, target)
return handler
for _old, _new in LEGACY_PATHS.items():
router.add_api_route(_old, _make_handler(_new), methods=["GET"])