From ef034c6c5cfc6ad5f2046283f3ee517945c1d01c Mon Sep 17 00:00:00 2001 From: Richard Fox Date: Fri, 29 Nov 2024 00:00:12 -0800 Subject: [PATCH] feat(png): very simple png support. Honestly, I chose the first svg to png module I could find that worked. If this is useful great! --- package.json | 1 + pages/api/flags/[id]/png.js | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 pages/api/flags/[id]/png.js diff --git a/package.json b/package.json index 5c7fa75..c7ef134 100644 --- a/package.json +++ b/package.json @@ -28,6 +28,7 @@ "react-markdown": "^8.0.7", "styled-components": "^6.0.0-rc.3", "svg-inline-loader": "^0.8.2", + "svg-png-converter": "^0.0.9", "urql": "^4.0.4" }, "devDependencies": { diff --git a/pages/api/flags/[id]/png.js b/pages/api/flags/[id]/png.js new file mode 100644 index 0000000..a8de735 --- /dev/null +++ b/pages/api/flags/[id]/png.js @@ -0,0 +1,32 @@ +import flags from "../../../../data/flags"; + +import {svg2png} from 'svg-png-converter'; + +export default async (req, res) => { + const { + query: { id }, + } = req; + + const flag = flags.find((r) => String(r.id) === String(id) || String(r.name).toLowerCase() === String(id).toLowerCase()); + if (flag) { + if (process.env.NODE_ENV === "development") { + console.log( + `${flag.emoji != null ? flag.emoji : "🏳️‍🌈"} Delivering ${ + flag.name + } Flag SVG!` + ); + } + res.statusCode = 200; + res.setHeader("Content-Type", "image/png"); + + let s = await svg2png({ + input: flag.svg, + encoding: 'buffer', + format: "png" + }); + res.send(s); + return; + } + console.warn(`🏳️‍ Flag ${id} not found!`); + res.status(404).send("Not found"); +};