"""Federation app fragment endpoints. Exposes sx fragments at ``/internal/fragments/`` for consumption by other coop apps via the fragment client. All handlers are defined declaratively in .sx files under ``federation/sx/handlers/`` and dispatched via the sx handler registry. """ from __future__ import annotations from quart import Blueprint, Response, request from shared.infrastructure.fragments import FRAGMENT_HEADER from shared.sx.handlers import get_handler, execute_handler def register(): bp = Blueprint("fragments", __name__, url_prefix="/internal/fragments") @bp.before_request async def _require_fragment_header(): if not request.headers.get(FRAGMENT_HEADER): return Response("", status=403) @bp.get("/") async def get_fragment(fragment_type: str): handler_def = get_handler("federation", fragment_type) if handler_def is not None: result = await execute_handler( handler_def, "federation", args=dict(request.args), ) return Response(result, status=200, content_type="text/sx") return Response("", status=200, content_type="text/sx") return bp