mirror of
https://github.com/avatao-content/baseimage-tutorial-framework
synced 2024-11-05 23:51:21 +00:00
46 lines
967 B
Python
46 lines
967 B
Python
# Copyright (C) 2018 Avatao.com Innovative Learning Kft.
|
|
# All Rights Reserved. See LICENSE file for details.
|
|
|
|
import json
|
|
|
|
|
|
def serialize_tfw_msg(message):
|
|
return serialize_all(message['key'], message)
|
|
|
|
|
|
def deserialize_tfw_msg(*args):
|
|
return deserialize_all(*args)[1]
|
|
|
|
|
|
def serialize_all(*args):
|
|
return tuple(_serialize_single(arg) for arg in args)
|
|
|
|
|
|
def deserialize_all(*args):
|
|
return tuple(_deserialize_single(arg) for arg in args)
|
|
|
|
|
|
def _serialize_single(data):
|
|
if not isinstance(data, str):
|
|
data = json.dumps(data)
|
|
return encode_if_needed(data)
|
|
|
|
|
|
def _deserialize_single(data):
|
|
try:
|
|
return json.loads(data)
|
|
except ValueError:
|
|
return decode_if_needed(data)
|
|
|
|
|
|
def encode_if_needed(value):
|
|
if isinstance(value, str):
|
|
value = value.encode('utf-8')
|
|
return value
|
|
|
|
|
|
def decode_if_needed(value):
|
|
if isinstance(value, (bytes, bytearray)):
|
|
value = value.decode('utf-8')
|
|
return value
|