Source code for platypush.message.response.qrcode

import base64
from typing import Optional, List

from pyzbar.pyzbar import Decoded
from pyzbar.locations import Rect

from platypush.message import Mapping
from platypush.message.response import Response


[docs]class QrcodeResponse(Response): pass
[docs]class QrcodeGeneratedResponse(QrcodeResponse): # noinspection PyShadowingBuiltins
[docs] def __init__(self, content: str, format: str, data: Optional[str] = None, image_file: Optional[str] = None, *args, **kwargs): super().__init__(*args, output={ 'text': content, 'data': data, 'format': format, 'image_file': image_file, }, **kwargs)
[docs]class RectModel(Mapping):
[docs] def __init__(self, rect: Rect): super().__init__() self.left = rect.left self.top = rect.top self.width = rect.width self.height = rect.height
[docs]class ResultModel(Mapping):
[docs] def __init__(self, result: Decoded, *args, **kwargs): super().__init__(*args, **kwargs) try: data = result.data.decode() except (ValueError, TypeError): data = base64.encodebytes(result.data).decode() self.data = data self.type = result.type self.rect = dict(RectModel(result.rect)) if result.rect else {}
[docs]class QrcodeDecodedResponse(QrcodeResponse):
[docs] def __init__(self, results: List[Decoded], image_file: Optional[str] = None, *args, **kwargs): super().__init__(*args, output={ 'image_file': image_file, 'results': [dict(ResultModel(result)) for result in results], }, **kwargs)
# vim:sw=4:ts=4:et: