from flask import Blueprint, request, jsonify import qrcode import io import base64 from util.logger import logger from auth.token import verify_token qrcode_blueprint = Blueprint('qrcode_tool', __name__) @qrcode_blueprint.route('/api/qrcode/generate', methods=['POST']) def generate_qrcode(): user = verify_token() if not user: return jsonify({"message": "Nicht autorisiert"}), 401 try: data = request.get_json(silent=True) or {} text = data.get("text", "").strip() if not text: return jsonify({"message": "Text darf nicht leer sein"}), 400 qr = qrcode.QRCode(box_size=10, border=4) qr.add_data(text) qr.make(fit=True) img = qr.make_image(fill_color="black", back_color="white") buffer = io.BytesIO() img.save(buffer, format="PNG") b64 = base64.b64encode(buffer.getvalue()).decode() logger.info(f"QR-Code generiert von {user['username']}") return jsonify({"image": f"data:image/png;base64,{b64}"}) except Exception as e: logger.error(f"Fehler QR-Code: {e}") return jsonify({"message": "Fehler beim Generieren"}), 500