werkzeugkiste/backend/src/routes/generateqrcode.route.ts
2025-02-21 15:18:15 +01:00

39 lines
1.2 KiB
TypeScript

import { FastifyInstance, FastifyReply, FastifyRequest } from "fastify";
import * as QRCode from "qrcode";
interface RequestBody {
qrcodeContent: string;
}
export async function generateQRCode(app: FastifyInstance) {
app.post(
"/api/generate-qrcode",
async (
request: FastifyRequest<{ Body: RequestBody }>,
reply: FastifyReply,
) => {
const data = request.body;
if (!data.qrcodeContent) {
return reply.status(400).send({ error: "Missing text parameter" });
} else if (data.qrcodeContent === "") {
return reply
.status(400)
.send({ error: "Text parameter cannot be empty" });
} else if (data.qrcodeContent.length > 1000) {
return reply.status(400).send({ error: "Text parameter too long" });
}
try {
const qrCodeUrl = await QRCode.toDataURL(data.qrcodeContent);
return reply
.header("Content-Type", "application/json")
.status(200)
.send({ qrCode: qrCodeUrl });
} catch (error) {
console.error("QR Code generation error:", error);
return reply.status(500).send({ error: "Error generating QR code!" });
}
},
);
}