diff --git a/pages/api/board/[name].js b/pages/api/board/[name].js index 91dc92cb0..7f59168f3 100644 --- a/pages/api/board/[name].js +++ b/pages/api/board/[name].js @@ -1,4 +1,4 @@ -import {GenerateSVG} from "./svg/[file]"; +import {gerberToSvg} from "./svg/[board_url]"; export const FetchProject = async (name) => { const readme = await fetch(`https://raw.githubusercontent.com/hackclub/OnBoard/main/projects/${name}/README.md`) @@ -24,7 +24,7 @@ export const FetchProject = async (name) => { /*const thumbnail = await fetch(`https://github.com/snoglobe/OnBoard/raw/main/projects/${name}/thumbnail.png`, {mode: 'no-cors'})*/ /*console.log(thumbnail)*/ const image = /*thumbnail.ok ? `https://github.com/snoglobe/OnBoard/raw/main/projects/${name}/thumbnail.png` - :*/ `data:image/svg+xml;base64,${btoa((await GenerateSVG(`https://github.com/snoglobe/OnBoard/raw/main/projects/${name}/gerber.zip`)).top)}` + :*/ `data:image/svg+xml;base64,${btoa((await gerberToSvg(`https://github.com/snoglobe/OnBoard/raw/main/projects/${name}/gerber.zip`)).top)}` console.log("done") return({ project_name: name ?? null, diff --git a/pages/api/board/svg/[board_url]/index.js b/pages/api/board/svg/[board_url]/index.js index 1ea837f45..657326fda 100644 --- a/pages/api/board/svg/[board_url]/index.js +++ b/pages/api/board/svg/[board_url]/index.js @@ -8,7 +8,12 @@ export const gerberToSvg = async (gerberURL) => { const zip = new JSZip(); const zippedData = await new Promise((resolve, _reject) => { - zip.loadAsync(data).then(resolve) + zip.loadAsync(data).then(resolve, (e) => { + console.error(e) + resolve({ + files: {} // TODO: actually handle this error (bad or nonexistent gerber.zip) + }) + }) }) const allowedExtensions = [ @@ -49,6 +54,11 @@ export const gerberToSvg = async (gerberURL) => { const plotResult = plot(readResult) const renderLayersResult = renderLayers(plotResult) const renderBoardResult = renderBoard(renderLayersResult) + for (const file of files) { + if(fs.existsSync(file)) { + fs.unlinkSync(file) + } + } return { top: stringifySvg(renderBoardResult.top), bottom: stringifySvg(renderBoardResult.bottom), @@ -63,12 +73,12 @@ export default async function handler(req, res) { } // ensure valid file url is included const url = new URL(decodeURI(file)) - const svg = await GenerateSVG(url) - if (format == 'top') { + const svg = await gerberToSvg(url) + if (format === 'top') { res.contentType('image/svg'); return res.status(200).send(svg.top) } - if (format == 'json') return res.status(200).json(svg) + if (format === 'json') return res.status(200).json(svg) return res.status(200).json(svg) }