Files
hydra/gitea_hydra_server.py
ahtlon 7c75138ca9
Some checks failed
Test / tests (ubuntu-latest, x86_64-linux) (push) Failing after 31s
Test / tests (ubuntu-24.04-arm, aarch64-linux) (push) Has been cancelled
Update Flakes / update-flakes (push) Failing after 1m3s
fix
2026-03-12 19:10:04 +01:00

72 lines
2.0 KiB
Python

#/usr/bin/env python3
#imports
import os
import json
from http.server import BaseHTTPRequestHandler, HTTPServer
import urllib.request
#Vars
baseurl="git.dynamicdiscord.de"
owner="ahtlon"
repo="infrastructure"
host="127.0.0.1"
port=27364
def _get_api_response():
###https://docs.gitea.com/api/1.21/#tag/repository/operation/repoListPullRequests
###GET /api/v1/repos/{owner}/{repo}/pulls
url=(f"https://{baseurl}/api/v1/repos/{owner}/{repo}/pulls?state=open")
headers={"Accept": "application/json"}
req=urllib.request.Request(url, headers=headers)
with urllib.request.urlopen(req) as resp:
return json.loads(resp.read().decode("utf-8"))
def _parse_response():
target_repo_url=f"https://{baseurl}/{owner}/{repo}.git"
pulls: dict={}
response=_get_api_response()
for pr in response:
pr["target_repo_url"]=target_repo_url
pulls[str(pr["number"])]=pr
return pulls
class PullsHandler(BaseHTTPRequestHandler):
_VALID_PATHS={"/", "/gitea-pulls-sorted.json"}
def do_GET(self):
if self.path not in self._VALID_PATHS:
self.send_error(404, "Not Found")
return
answer=dict(_parse_response())
body=json.dumps(answer, indent=2, sort_keys=True).encode("utf-8")
self.send_response(200)
self.send_header("Content-Type", "application/json; charset=utf-8")
self.send_header("Content-Length", str(len(body)))
self.end_headers()
self.wfile.write(body)
def log_message(self, fmt, *args):
print(
f"[gitea-translator] {self.address_string()} - {fmt % args}",
flush=True,
)
def main():
print(
f"[gitea-translator] Starting, pulling from {baseurl}/{owner}/{repo}",
flush=True,
)
server=HTTPServer((host, port), PullsHandler)
print(
f"[gitea-translator] online @ {host}:{port}",
flush=True,
)
server.serve_forever()
if __name__ == "__main__":
main()