"""Sitemap & robots.txt API: status check, regenerate endpoint. Follows the same pattern as the theme API — public GET for status, admin-only POST to force regeneration. """ from typing import Any, Dict from fastapi import APIRouter, Depends, HTTPException, status from app.auth import get_current_admin_user from app.sitemap_export import get_sitemap_status, write_sitemap_files from app.user_models import User router = APIRouter() @router.get("/status") async def sitemap_status() -> Dict[str, Any]: """Return sitemap/robots file status. Public endpoint.""" return get_sitemap_status() @router.post("/regenerate", status_code=200) async def regenerate_sitemap( _: User = Depends(get_current_admin_user), ) -> Dict[str, Any]: """Force regenerate sitemap.xml and robots.txt. Admin only. Returns the paths of the newly written files. """ try: return write_sitemap_files() except Exception as e: raise HTTPException( status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, detail=f"Failed to generate sitemap: {e}", )