Spaces:
Running
on
CPU Upgrade
Running
on
CPU Upgrade
File size: 2,383 Bytes
d1ddfcd 74f2127 a5b6885 d1ddfcd 74f2127 a5b6885 74f2127 a5b6885 74f2127 a5b6885 d1ddfcd a5b6885 74f2127 a5b6885 d1ddfcd a5b6885 d1ddfcd a5b6885 d1ddfcd a5b6885 d1ddfcd a5b6885 d1ddfcd a5b6885 d1ddfcd a5b6885 d1ddfcd e8ac5f6 df9ce22 74f2127 d1ddfcd df9ce22 74f2127 a5b6885 88b92fb |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
from fastapi import FastAPI, Request, Response
import os
import requests
import json
import logging
# Set up logging
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
logger = logging.getLogger(__name__)
HF_WEBHOOK_SECRET = os.environ.get("HF_WEBHOOK_SECRET")
SLACK_WEBHOOK_URL = os.environ.get("SLACK_WEBHOOK_URL")
def send_slack_message(message: str):
"""Send a message to Slack using webhook URL"""
if not SLACK_WEBHOOK_URL:
logger.warning(f"No Slack webhook URL configured. Message: {message}")
return
payload = {"text": message}
try:
response = requests.post(SLACK_WEBHOOK_URL, json=payload)
response.raise_for_status()
logger.info(f"Slack message sent successfully: {message}")
except requests.exceptions.RequestException as e:
logger.error(f"Failed to send Slack message: {e}")
app = FastAPI()
@app.post("/webhook")
async def webhook(request: Request):
logger.info(f"Received webhook request from {request.client.host}")
if request.headers.get("X-Webhook-Secret") != HF_WEBHOOK_SECRET:
logger.warning("Invalid webhook secret received")
return Response("Invalid secret", status_code=401)
data = await request.json()
logger.info(f"Webhook payload: {json.dumps(data, indent=2)}")
event = data.get("event", {})
repo = data.get("repo", {})
# Only process model repo events
if repo.get("type") != "model" or event.get("scope") != "repo":
logger.info(f"Skipping non-model repo event: type={repo.get('type')}, scope={event.get('scope')}")
return Response("Not a model repo event", status_code=200)
action = event.get("action")
logger.info(f"Processing model repo action: {action}")
if action == "move":
old_name = repo.get("name", "unknown")
new_name = data.get("movedTo", {}).get("name", "unknown")
message = f"π Model renamed: {old_name} β https://hf.co/{new_name}"
send_slack_message(message)
elif action == "delete":
name = repo.get("name", "unknown")
message = f"ποΈ Model deleted: https://hf.co/{name}"
send_slack_message(message)
else:
logger.info(f"Unhandled action: {action}")
return Response("Webhook notification received and processed!", status_code=200)
|