pagezyhf HF Staff commited on
Commit
74f2127
·
1 Parent(s): 7d2888b
Files changed (2) hide show
  1. main.py +24 -5
  2. requirements.txt +2 -1
main.py CHANGED
@@ -1,13 +1,30 @@
1
  from fastapi import FastAPI, Request, Response
2
  import os
 
 
3
 
4
- KEY = os.environ.get("WEBHOOK_SECRET")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5
 
6
  app = FastAPI()
7
 
8
  @app.post("/webhook")
9
  async def webhook(request: Request):
10
- if request.headers.get("X-Webhook-Secret") != KEY:
11
  return Response("Invalid secret", status_code=401)
12
  data = await request.json()
13
  event = data.get("event", {})
@@ -19,8 +36,10 @@ async def webhook(request: Request):
19
  if action == "move":
20
  old_name = data.get("oldRepo", {}).get("name", "unknown") # TODO ernsure good key when name change
21
  new_name = repo.get("name", "unknown")
22
- print(f"Model repo renamed from {old_name} to {new_name}.")
 
23
  elif action == "delete":
24
  name = repo.get("name", "unknown")
25
- print(f"Model repo {name} was deleted.")
26
- return Response("Webhook received!", status_code=200)
 
 
1
  from fastapi import FastAPI, Request, Response
2
  import os
3
+ import requests
4
+ import json
5
 
6
+ HF_WEBHOOK_SECRET = os.environ.get("HF_WEBHOOK_SECRET")
7
+ SLACK_WEBHOOK_URL = os.environ.get("SLACK_WEBHOOK_URL")
8
+
9
+ def send_slack_message(message: str):
10
+ """Send a message to Slack using webhook URL"""
11
+ if not SLACK_WEBHOOK_URL:
12
+ print(f"No Slack webhook URL configured. Message: {message}")
13
+ return
14
+
15
+ payload = {"text": message}
16
+ try:
17
+ response = requests.post(SLACK_WEBHOOK_URL, json=payload)
18
+ response.raise_for_status()
19
+ print(f"Slack message sent successfully: {message}")
20
+ except requests.exceptions.RequestException as e:
21
+ print(f"Failed to send Slack message: {e}")
22
 
23
  app = FastAPI()
24
 
25
  @app.post("/webhook")
26
  async def webhook(request: Request):
27
+ if request.headers.get("X-Webhook-Secret") != HF_WEBHOOK_SECRET:
28
  return Response("Invalid secret", status_code=401)
29
  data = await request.json()
30
  event = data.get("event", {})
 
36
  if action == "move":
37
  old_name = data.get("oldRepo", {}).get("name", "unknown") # TODO ernsure good key when name change
38
  new_name = repo.get("name", "unknown")
39
+ message = f"Model renamed: `{old_name}` `{new_name}`"
40
+ send_slack_message(message)
41
  elif action == "delete":
42
  name = repo.get("name", "unknown")
43
+ message = f"Model deleted: `{name}`"
44
+ send_slack_message(message)
45
+ return Response("Webhoo notification received and processed!", status_code=200)
requirements.txt CHANGED
@@ -1,2 +1,3 @@
1
  fastapi
2
- uvicorn
 
 
1
  fastapi
2
+ uvicorn
3
+ requests