Files
gitea-sync-ai/app/routes.py
T

45 lines
1.4 KiB
Python

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}