platypush/platypush/backend/http/app/routes/plugins/qrcode/__init__.py

34 lines
854 B
Python

import base64
from flask import abort, request, Blueprint, Response
from platypush.backend.http.app import template_folder
from platypush.context import get_plugin
qrcode = Blueprint('qrcode', __name__, template_folder=template_folder)
# Declare routes list
__routes__ = [
qrcode,
]
@qrcode.route('/qrcode', methods=['GET'])
def generate_code():
"""
This route can be used to generate a QR code given a ``content`` parameter.
"""
from platypush.plugins.qrcode import QrcodePlugin
content = request.args.get('content')
if not content:
abort(400, 'Expected content parmeter')
plugin: QrcodePlugin = get_plugin('qrcode')
response = plugin.generate(content, format='png').output
data = base64.decodebytes(response['data'].encode())
return Response(data, mimetype='image/png')
# vim:sw=4:ts=4:et: