Newer
Older
gnexus-tasks / backend / app / api / repo_readme.py
"""README.md репозитория для задач, где описание — только ссылка на git.

GET /api/repo-readme?url=... — селф-хостед git-системы поддерживаются
эвристикой (пробуем известные пути к сырому README: API github/gitlab/gitea,
raw-пути web-интерфейсов). Не нашли — 404, фронт оставляет описание как было.
"""

from fastapi import APIRouter, HTTPException
from pydantic import BaseModel

from app.dependencies import UserIdDep
from app.services import readme

router = APIRouter(prefix="/api/repo-readme", tags=["repo-readme"])


class RepoReadmeOut(BaseModel):
    content: str


@router.get("", response_model=RepoReadmeOut)
async def get_repo_readme(url: str, user_id: UserIdDep) -> RepoReadmeOut:
    content = await readme.fetch_readme(url)
    if content is None:
        raise HTTPException(status_code=404, detail="README.md not found")
    return RepoReadmeOut(content=content)