import hmac import hashlib from typing import Any, Dict def verify_signature(secret: str, payload: bytes, signature: str) -> bool: if not secret: return False computed = hmac.new(secret.encode("utf-8"), payload, hashlib.sha256).hexdigest() return hmac.compare_digest(computed, signature) def parse_webhook(payload: Dict[str, Any]) -> Dict[str, Any]: return { "event": payload.get("action") or payload.get("event"), "repository": payload.get("repository", {}).get("full_name"), "ref": payload.get("ref"), }