59 lines
1.5 KiB
Python
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"])
|