Files
simple-qr/server/api/index.ts

31 lines
805 B
TypeScript

import { resolve } from "path";
export default defineEventHandler(async (event) => {
const query = getQuery(event);
const parsed = settingsSchema.safeParse(query);
if (!parsed.success) {
return createError({
status: 400,
data: {
errors: Object.fromEntries(
parsed.error.issues.map((x) => [x.path.join("."), x.message]),
),
},
});
}
const { format, logo, content } = parsed.data;
const logoUrl = logo ? resolve("public", `logos/${logo}.png`) : undefined;
const canvas = await renderQRCodeToCanvas(content, logoUrl);
const image = canvas.toBuffer(format);
event.node.res.setHeader("Content-Type", `image/${format}`);
event.node.res.setHeader(
"Content-Disposition",
`filename="qrcode.${format}"`,
);
return image;
});