diff --git a/app/routes.py b/app/routes.py index 3c7f3a1..495dde1 100644 --- a/app/routes.py +++ b/app/routes.py @@ -1,9 +1,8 @@ import httpx from pathlib import Path -from fastapi import APIRouter, Depends +from fastapi import APIRouter, Depends, HTTPException from .git_manager import clone_repo, push_changes from .changelog_gen import generate_changelog -from .main import get_token router = APIRouter() @@ -13,33 +12,30 @@ async def health_check(): return {"status": "ok"} +def get_token_or_default(): + """Sichert Token oder wirft Fehler.""" + from .main import ACCESS_TOKEN + if not ACCESS_TOKEN: + raise HTTPException(status_code=503, detail="ACCESS_TOKEN nicht gesetzt") + return ACCESS_TOKEN + + @router.get("/repos") async def list_repos(): """Listet Repositories von Gitea auf.""" - GITEE_URL = "https://git.carabella.ch/api/v1/user/repos" + from .main import GITEE_URL, get_token token = get_token() - headers = {"Authorization": f"token {token}"} if token else {} + if not token: + # Debug-Info! + return {"error": "Kein Token vorhanden!", "hint": "Setze ACCESS_TOKEN Umgebungsvariable"} + + url = f"{GITEE_URL.rstrip('/')}/api/v1/user/repos" + + headers = {"Authorization": f"token {token}"} 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} \ No newline at end of file + resp = await client.get(url, headers=headers) + if resp.status_code != 200: + return {"error": resp.text[:500]} # Fehlermeldung zurückgeben + return resp.json() \ No newline at end of file