40 lines
1.5 KiB
Python
40 lines
1.5 KiB
Python
import os
|
|
import requests
|
|
|
|
|
|
class GiteaClient:
|
|
"""
|
|
Emma sin primære tilgang til kodebasen via Gitea.
|
|
Token fra GITEA_TOKEN env eller Secret Manager.
|
|
"""
|
|
|
|
def __init__(self, base_url: str = "http://34.170.51.84:3000", token: str = None):
|
|
self.base_url = base_url.rstrip("/")
|
|
self.token = token or os.environ.get("GITEA_TOKEN", "")
|
|
self.headers = {"Authorization": f"token {self.token}", "Content-Type": "application/json"}
|
|
|
|
def list_repos(self, owner: str = "chris") -> list:
|
|
r = requests.get(f"{self.base_url}/api/v1/repos/search?owner={owner}&limit=50",
|
|
headers=self.headers, timeout=10)
|
|
r.raise_for_status()
|
|
return r.json().get("data", [])
|
|
|
|
def get_file(self, owner: str, repo: str, path: str, branch: str = "main") -> str:
|
|
r = requests.get(f"{self.base_url}/api/v1/repos/{owner}/{repo}/raw/{path}?ref={branch}",
|
|
headers=self.headers, timeout=10)
|
|
r.raise_for_status()
|
|
return r.text
|
|
|
|
def list_branches(self, owner: str, repo: str) -> list:
|
|
r = requests.get(f"{self.base_url}/api/v1/repos/{owner}/{repo}/branches",
|
|
headers=self.headers, timeout=10)
|
|
r.raise_for_status()
|
|
return [b["name"] for b in r.json()]
|
|
|
|
def health_check(self) -> bool:
|
|
try:
|
|
r = requests.get(f"{self.base_url}/api/v1/version", timeout=5)
|
|
return r.status_code == 200
|
|
except Exception:
|
|
return False
|