add project size ratelimiting
This commit is contained in:
@ -13,6 +13,7 @@ import {
|
||||
createFile,
|
||||
deleteFile,
|
||||
generateCode,
|
||||
getProjectSize,
|
||||
getSandboxFiles,
|
||||
renameFile,
|
||||
saveFile,
|
||||
@ -155,8 +156,16 @@ io.on("connection", async (socket) => {
|
||||
}
|
||||
})
|
||||
|
||||
socket.on("createFile", async (name: string) => {
|
||||
socket.on("createFile", async (name: string, callback) => {
|
||||
try {
|
||||
|
||||
const size: number = await getProjectSize(data.sandboxId)
|
||||
// limit is 200mb
|
||||
if (size > 200 * 1024 * 1024) {
|
||||
io.emit("rateLimit", "Rate limited: project size exceeded. Please delete some files.")
|
||||
callback({success: false})
|
||||
}
|
||||
|
||||
await createFileRL.consume(data.userId, 1)
|
||||
|
||||
const id = `projects/${data.sandboxId}/${name}`
|
||||
@ -177,6 +186,8 @@ io.on("connection", async (socket) => {
|
||||
})
|
||||
|
||||
await createFile(id)
|
||||
|
||||
callback({success: true})
|
||||
} catch (e) {
|
||||
io.emit("rateLimit", "Rate limited: file creation. Please slow down.")
|
||||
}
|
||||
|
@ -1,3 +1,4 @@
|
||||
import e from "cors"
|
||||
import {
|
||||
R2FileBody,
|
||||
R2Files,
|
||||
@ -134,6 +135,13 @@ export const deleteFile = async (fileId: string) => {
|
||||
return res.ok
|
||||
}
|
||||
|
||||
export const getProjectSize = async (id: string) => {
|
||||
const res = await fetch(
|
||||
`https://storage.ishaan1013.workers.dev/api/size?sandboxId=${id}`
|
||||
)
|
||||
return (await res.json()).size
|
||||
}
|
||||
|
||||
export const generateCode = async ({
|
||||
fileName,
|
||||
code,
|
||||
|
Reference in New Issue
Block a user