import httpx from pathlib import Path from fastapi import APIRouter, HTTPException from pydantic import BaseModel from .git_manager import clone_repo from .changelog_gen import generate_changelog router = APIRouter() class SubscribeRequest(BaseModel): """Schema für Subscription Request""" repo_url: str target_name: str = "imported-repo" token_provided: str | None = None @router.post("/subscribe") async def subscribe_repo(req: SubscribeRequest): """Abonniert und klont ein Repository.""" from .main import get_token, ACCESS_TOKEN # Nutze übergebener Token ODER lokale Umgebungsvariable ODER Standard-Token aus main.py effective_token = req.token_provided or ACCESS_TOKEN or "" if not effective_token: raise HTTPException(status_code=401, detail="Kein TOKEN vorhanden! Bitte setze ACCESS_TOKEN Umgebungsvariable.") target_dir = Path("/projects") / req.target_name result = clone_repo(req.repo_url, target_dir, token=effective_token) if not result["success"]: return {"error": result.get("error"), "success": False} generate_changelog(target_dir) return { "message": f"✅ {req.target_name} geklont!", "path": str(target_dir), "success": True, "token_used": bool(effective_token and not req.token_provided) # Zeigt ob Token vom System oder User kommt }