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
|