baseimage-tutorial-framework/lib/tfw/networking/serialization.py

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