Files
overub/core/gitea.py
2025-12-21 17:12:32 +01:00

34 lines
1.2 KiB
Python

import json
from typing import Any, Dict, List, Optional
from urllib import parse, request
class GiteaClient:
def __init__(self, api_url: str, token: str = "") -> None:
self.api_url = api_url.rstrip("/")
self.token = token
def _headers(self) -> Dict[str, str]:
headers = {"Accept": "application/json"}
if self.token:
headers["Authorization"] = f"token {self.token}"
return headers
def _get(self, path: str, params: Optional[Dict[str, str]] = None) -> Any:
url = f"{self.api_url}{path}"
if params:
url = f"{url}?{parse.urlencode(params)}"
req = request.Request(url, headers=self._headers())
with request.urlopen(req) as response:
payload = response.read().decode("utf-8")
return json.loads(payload)
def search_repos(self, query: str) -> List[Dict[str, Any]]:
return self._get("/repos/search", {"q": query}).get("data", [])
def repo_info(self, owner: str, repo: str) -> Dict[str, Any]:
return self._get(f"/repos/{owner}/{repo}")
def releases(self, owner: str, repo: str) -> List[Dict[str, Any]]:
return self._get(f"/repos/{owner}/{repo}/releases")