From ede3882a94215521a46211759d553e8dad2501ff Mon Sep 17 00:00:00 2001 From: daniel31x13 Date: Wed, 20 Mar 2024 09:56:14 -0400 Subject: [PATCH] uncomment code --- components/Navbar.tsx | 4 +- lib/api/controllers/links/postLink.ts | 18 +-- pages/api/v1/archives/[linkId].ts | 153 +++++++++++++------------- 3 files changed, 87 insertions(+), 88 deletions(-) diff --git a/components/Navbar.tsx b/components/Navbar.tsx index cb38c93..df672c1 100644 --- a/components/Navbar.tsx +++ b/components/Navbar.tsx @@ -93,7 +93,7 @@ export default function Navbar() { New Link - {/*
  • +
  • { (document?.activeElement as HTMLElement)?.blur(); @@ -104,7 +104,7 @@ export default function Navbar() { > Upload File
    -
  • */} +
  • { diff --git a/lib/api/controllers/links/postLink.ts b/lib/api/controllers/links/postLink.ts index ba4e513..80205e4 100644 --- a/lib/api/controllers/links/postLink.ts +++ b/lib/api/controllers/links/postLink.ts @@ -12,14 +12,16 @@ export default async function postLink( link: LinkIncludingShortenedCollectionAndTags, userId: number ) { - try { - new URL(link.url || ""); - } catch (error) { - return { - response: - "Please enter a valid Address for the Link. (It should start with http/https)", - status: 400, - }; + if (link.url || link.type === "url") { + try { + new URL(link.url || ""); + } catch (error) { + return { + response: + "Please enter a valid Address for the Link. (It should start with http/https)", + status: 400, + }; + } } if (!link.collection.id && link.collection.name) { diff --git a/pages/api/v1/archives/[linkId].ts b/pages/api/v1/archives/[linkId].ts index b13e690..5e5ada2 100644 --- a/pages/api/v1/archives/[linkId].ts +++ b/pages/api/v1/archives/[linkId].ts @@ -73,83 +73,80 @@ export default async function Index(req: NextApiRequest, res: NextApiResponse) { return res.send(file); } + } else if (req.method === "POST") { + const user = await verifyUser({ req, res }); + if (!user) return; + + const collectionPermissions = await getPermission({ + userId: user.id, + linkId, + }); + + const memberHasAccess = collectionPermissions?.members.some( + (e: UsersAndCollections) => e.userId === user.id && e.canCreate + ); + + if (!(collectionPermissions?.ownerId === user.id || memberHasAccess)) + return { response: "Collection is not accessible.", status: 401 }; + + // await uploadHandler(linkId, ) + + const MAX_UPLOAD_SIZE = Number(process.env.NEXT_PUBLIC_MAX_FILE_SIZE); + + const form = formidable({ + maxFields: 1, + maxFiles: 1, + maxFileSize: MAX_UPLOAD_SIZE || 30 * 1048576, + }); + + form.parse(req, async (err, fields, files) => { + const allowedMIMETypes = [ + "application/pdf", + "image/png", + "image/jpg", + "image/jpeg", + ]; + + if ( + err || + !files.file || + !files.file[0] || + !allowedMIMETypes.includes(files.file[0].mimetype || "") + ) { + // Handle parsing error + return res.status(500).json({ + response: `Sorry, we couldn't process your file. Please ensure it's a PDF, PNG, or JPG format and doesn't exceed ${MAX_UPLOAD_SIZE}MB.`, + }); + } else { + const fileBuffer = fs.readFileSync(files.file[0].filepath); + + const linkStillExists = await prisma.link.findUnique({ + where: { id: linkId }, + }); + + if (linkStillExists) { + await createFile({ + filePath: `archives/${collectionPermissions?.id}/${ + linkId + suffix + }`, + data: fileBuffer, + }); + + await prisma.link.update({ + where: { id: linkId }, + data: { + image: `archives/${collectionPermissions?.id}/${linkId + suffix}`, + lastPreserved: new Date().toISOString(), + }, + }); + } + + fs.unlinkSync(files.file[0].filepath); + } + + return res.status(200).json({ + response: files, + }); + }); } - // else if (req.method === "POST") { - // const user = await verifyUser({ req, res }); - // if (!user) return; - - // const collectionPermissions = await getPermission({ - // userId: user.id, - // linkId, - // }); - - // const memberHasAccess = collectionPermissions?.members.some( - // (e: UsersAndCollections) => e.userId === user.id && e.canCreate - // ); - - // if (!(collectionPermissions?.ownerId === user.id || memberHasAccess)) - // return { response: "Collection is not accessible.", status: 401 }; - - // // await uploadHandler(linkId, ) - - // const MAX_UPLOAD_SIZE = Number(process.env.NEXT_PUBLIC_MAX_FILE_SIZE); - - // const form = formidable({ - // maxFields: 1, - // maxFiles: 1, - // maxFileSize: MAX_UPLOAD_SIZE || 30 * 1048576, - // }); - - // form.parse(req, async (err, fields, files) => { - // const allowedMIMETypes = [ - // "application/pdf", - // "image/png", - // "image/jpg", - // "image/jpeg", - // ]; - - // if ( - // err || - // !files.file || - // !files.file[0] || - // !allowedMIMETypes.includes(files.file[0].mimetype || "") - // ) { - // // Handle parsing error - // return res.status(500).json({ - // response: `Sorry, we couldn't process your file. Please ensure it's a PDF, PNG, or JPG format and doesn't exceed ${MAX_UPLOAD_SIZE}MB.`, - // }); - // } else { - // const fileBuffer = fs.readFileSync(files.file[0].filepath); - - // const linkStillExists = await prisma.link.findUnique({ - // where: { id: linkId }, - // }); - - // if (linkStillExists) { - // await createFile({ - // filePath: `archives/${collectionPermissions?.id}/${ - // linkId + suffix - // }`, - // data: fileBuffer, - // }); - - // await prisma.link.update({ - // where: { id: linkId }, - // data: { - // image: `archives/${collectionPermissions?.id}/${ - // linkId + suffix - // }`, - // lastPreserved: new Date().toISOString(), - // }, - // }); - // } - - // fs.unlinkSync(files.file[0].filepath); - // } - - // return res.status(200).json({ - // response: files, - // }); - // }); - // } }