Richard Guo
commited on
Commit
·
f47c911
1
Parent(s):
46270d0
webhook models
Browse files
main.py
CHANGED
@@ -1,13 +1,13 @@
|
|
1 |
from fastapi import FastAPI, Form, Request, BackgroundTasks
|
2 |
from fastapi.responses import HTMLResponse
|
3 |
from fastapi.templating import Jinja2Templates
|
4 |
-
#from pydantic import BaseModel
|
5 |
|
6 |
from uuid import uuid4
|
7 |
import time
|
8 |
import asyncio
|
9 |
|
10 |
from build_map import load_dataset_and_metadata, upload_dataset_to_atlas
|
|
|
11 |
|
12 |
|
13 |
app = FastAPI()
|
@@ -56,3 +56,18 @@ async def read_task(task_id: str):
|
|
56 |
return {'status': 'not found'}
|
57 |
else:
|
58 |
return tasks[task_id]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
from fastapi import FastAPI, Form, Request, BackgroundTasks
|
2 |
from fastapi.responses import HTMLResponse
|
3 |
from fastapi.templating import Jinja2Templates
|
|
|
4 |
|
5 |
from uuid import uuid4
|
6 |
import time
|
7 |
import asyncio
|
8 |
|
9 |
from build_map import load_dataset_and_metadata, upload_dataset_to_atlas
|
10 |
+
from models import WebhookPayload, WebhookPayloadRepo, WebhookPayloadEvent
|
11 |
|
12 |
|
13 |
app = FastAPI()
|
|
|
56 |
return {'status': 'not found'}
|
57 |
else:
|
58 |
return tasks[task_id]
|
59 |
+
|
60 |
+
@app.post("/webhook")
|
61 |
+
async def post_webhook(background_tasks: BackgroundTasks, payload: WebhookPayload):
|
62 |
+
if not (
|
63 |
+
payload.event.action == "update"
|
64 |
+
and payload.event.scope.startswith("repo.content")
|
65 |
+
and payload.repo.type == "dataset"
|
66 |
+
):
|
67 |
+
return {"processed": False}
|
68 |
+
else:
|
69 |
+
task_id = str(uuid4())
|
70 |
+
tasks[task_id] = {'status': 'running'}
|
71 |
+
#form_data = DatasetForm(dataset_name=dataset_name)
|
72 |
+
background_tasks.add_task(upload_atlas_task, task_id, payload.repo.name)
|
73 |
+
return {'task_id': task_id}
|
models.py
ADDED
@@ -0,0 +1,17 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
from pydantic import BaseModel
|
2 |
+
from typing import Literal
|
3 |
+
|
4 |
+
class WebhookPayloadEvent(BaseModel):
|
5 |
+
action: Literal["create", "update", "delete"]
|
6 |
+
scope: str
|
7 |
+
|
8 |
+
class WebhookPayloadRepo(BaseModel):
|
9 |
+
type: Literal["dataset", "model", "space"]
|
10 |
+
name: str
|
11 |
+
id: str
|
12 |
+
private: bool
|
13 |
+
headSha: str
|
14 |
+
|
15 |
+
class WebhookPayload(BaseModel):
|
16 |
+
event: WebhookPayloadEvent
|
17 |
+
repo: WebhookPayloadRepo
|