Spaces:
Runtime error
Runtime error
import * as express from "express"; | |
const PORT = 7260; | |
if (!process.env.WEBHOOK_SECRET || !process.env.HF_TOKEN) { | |
console.error( | |
"This app needs those env variables to be defined", | |
"WEBHOOK_SECRET, HF_TOKEN" | |
); | |
process.exit(); | |
} | |
const app = express(); | |
app.use(express.json()); | |
app.post("/", async (req, res) => { | |
if (req.header("X-Webhook-Secret") !== process.env.WEBHOOK_SECRET) { | |
console.error("incorrect secret"); | |
return res.status(400).json({ error: "incorrect secret" }); | |
} | |
if (!req.body?.repo) return; | |
const { event, repo } = req.body; | |
if (event.action === "create" && event.scope === "repo") { | |
const [orgName, repoName] = repo.name.split("/"); | |
console.log({ event, repo, orgName, repoName }); | |
const payload = { | |
name: `${repoName}-rg`, | |
description: `Resource group for repository ${repoName}`, | |
repos: [{ ...repo, type: "model" }], | |
autoJoin: { | |
enabled: true, | |
role: "admin", | |
}, | |
}; | |
try { | |
await fetch( | |
`https://huggingface.co/api/organizations/${orgName}/resource-groups`, | |
{ | |
method: "POST", | |
headers: { | |
"Content-Type": "application/json", | |
Authorization: `Bearer ${process.env.HF_TOKEN}`, | |
}, | |
body: JSON.stringify(payload), | |
} | |
); | |
} catch (error) { | |
throw new Error(error.message); | |
} | |
} | |
res.json({ success: true }); | |
}); | |
app.listen(PORT, () => { | |
console.debug(`server started at http://localhost:${PORT}`); | |
}); | |