OSVauco/emma/emma_gitea.py
Chris Christiansen 9fcb9c354a
Some checks are pending
Check Python Version Consistency / Check Python Version (push) Waiting to run
feat(core): Fresh initialization - Deploy v3.6.1 Singularity Architecture
2026-09-03 04:03:09 +00:00

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