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"); +};