add folder logic

This commit is contained in:
Ishaan Dey
2024-05-11 18:03:42 -07:00
parent 9a5a0e13d3
commit b496ab193d
6 changed files with 43 additions and 17 deletions

View File

@ -23,6 +23,7 @@ import { IDisposable, IPty, spawn } from "node-pty"
import {
MAX_BODY_SIZE,
createFileRL,
createFolderRL,
deleteFileRL,
renameFileRL,
saveFileRL,
@ -222,6 +223,22 @@ io.on("connection", async (socket) => {
}
})
socket.on("createFolder", async (name: string, callback) => {
try {
await createFolderRL.consume(data.userId, 1)
const id = `projects/${data.sandboxId}/${name}`
fs.mkdir(path.join(dirName, id), { recursive: true }, function (err) {
if (err) throw err
})
callback()
} catch (e) {
io.emit("rateLimit", "Rate limited: folder creation. Please slow down.")
}
})
socket.on("renameFile", async (fileId: string, newName: string) => {
try {
await renameFileRL.consume(data.userId, 1)
@ -277,8 +294,6 @@ io.on("connection", async (socket) => {
socket.on("deleteFolder", async (folderId: string, callback) => {
const files = await getFolder(folderId)
console.log("deleting folder", folderId, files)
await Promise.all(files.map(async (file) => {
fs.unlink(path.join(dirName, file), function (err) {
if (err) throw err

View File

@ -12,6 +12,11 @@ export const createFileRL = new RateLimiterMemory({
duration: 2,
})
export const createFolderRL = new RateLimiterMemory({
points: 1,
duration: 2,
})
export const renameFileRL = new RateLimiterMemory({
points: 1,
duration: 2,