import httpx from pathlib import Path from fastapi import APIRouter, Depends from .git_manager import clone_repo, push_changes from .changelog_gen import generate_changelog from .main import get_token router = APIRouter() @router.get("/health") async def health_check(): return {"status": "ok"} @router.get("/repos") async def list_repos(): """Listet Repositories von Gitea auf.""" GITEE_URL = "https://git.carabella.ch/api/v1/user/repos" token = get_token() headers = {"Authorization": f"token {token}"} if token else {} async with httpx.AsyncClient() as client: resp = await client.get(GITEE_URL, headers=headers) return resp.json() @router.post("/subscribe") async def subscribe_repo(repo_url: str, target_name: str, token_provided: str = None): """Abonniert und klont ein Repository.""" # Wenn kein Token übergibst → nutz den DEFAULT aus .env oder Umgebung effective_token = token_provided or get_token() target_dir = Path("/projects") / (target_name or "imported-repo") result = clone_repo(repo_url, target_dir, token=effective_token) if not result["success"]: return {"error": result.get("error"), "success": False} # Optional: File-Watcher starten & Changelog erzeugen generate_changelog(target_dir) return {"message": f"✅ {target_name} geklont!", "path": str(target_dir), "success": True}