OSVauco/gitea-chat-bridge/main.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

37 lines
1.3 KiB
Python

import functions_framework
import requests
import os
CHAT_WEBHOOK = os.environ.get("CHAT_WEBHOOK_URL")
@functions_framework.http
def handler(request):
try:
payload = request.get_json(silent=True) or {}
repo_obj = payload.get("repository", {})
repo = repo_obj.get("full_name") or repo_obj.get("name") or "(ukjent repo)"
pusher_obj = payload.get("pusher", {})
pusher = (
pusher_obj.get("login")
or pusher_obj.get("full_name")
or pusher_obj.get("name")
or pusher_obj.get("email")
or payload.get("sender", {}).get("login")
or payload.get("sender", {}).get("full_name")
or "(ukjent bruker)"
)
ref = payload.get("ref", "").replace("refs/heads/", "")
commits = payload.get("commits", [])
lines = [f"\U0001f500 *Push til {repo}* \u2014 branch {ref} av {pusher}"]
for c in commits[:5]:
sha = c.get("id","")[:7]
msg = c.get("message","").split("\n")[0][:80]
url = c.get("url","")
lines.append(f" \u2022 {sha}: {msg}\n {url}")
requests.post(CHAT_WEBHOOK, json={"text": "\n".join(lines)}, timeout=5)
return ("OK", 200)
except Exception as e:
return (str(e), 500)