diff --git a/komrade/utils.py b/komrade/utils.py index 6e0bc76..6fe086d 100644 --- a/komrade/utils.py +++ b/komrade/utils.py @@ -59,41 +59,68 @@ def hashish(binary_data): from base64 import b64encode,b64decode import ujson as json def package_for_transmission(data_json): - for k,v in data_json.items(): - if type(v)==bytes: - if not isBase64(v): v=b64encode(v) - v=v.decode() - elif type(v)==str: - # if not isBase64(v): v=b64encode(v.encode()) - pass - elif type(v)==dict: - v=package_for_transmission(v) - data_json[k]=v - print(type(data_json), data_json) - data_json_s = json.dumps(data_json) - data_json_b = data_json_s.encode() - return b64encode(data_json_b) - -def unpackage_from_transmission(data_json_b): - print(type(data_json_b),'data_json_b1???',data_json_b) - if type(data_json_b)==bytes and isBase64(data_json_b): data_json_b=b64decode(data_json_b) - print(type(data_json_b),'data_json_b???',data_json_b) - # print(type(data_json_b),) - data_json_s = data_json_b.decode() - print(type(data_json_s),'data_json_s???',data_json_s) - data_json = json.loads(data_json_s) - print(type(data_json),'data_json???',data_json) - for k,v in data_json.items(): - if type(v)==bytes: - if isBase64(v):v=b64decode(v.decode()) - data_json[k]=v - elif type(v)==str: - if isBase64(v): v=b64decode(v.encode()) - data_json[k]=v + + # for k,v in data_json.items(): + # if type(v)==bytes: + # if not isBase64(v): v=b64encode(v) + # v=v.decode() + # elif type(v)==str: + # # if not isBase64(v): v=b64encode(v.encode()) + # pass + # elif type(v)==dict: + # v=package_for_transmission(v) + # data_json[k]=v + # print(type(data_json), data_json) + # data_json_s = json.dumps(data_json) + # data_json_b = data_json_s.encode() + print('package_for_transmission.data_json =',data_json) + data_json_bstr = json.dumps(data_json,reject_bytes=False) + print('package_for_transmission.data_json_b =',data_json_bstr) + return b64encode(data_json_bstr.encode()) + + +def dejsonize(dict): + for k,v in dict.items(): + if type(v)==str and isBase64(v): + dict[k]=b64decode(v.encode()) + if type(v)==bytes and isBase64(v): + dict[k]=b64decode(v) elif type(v)==dict: - data_json[k]=unpackage_from_transmission(v) + dict[k]=dejsonize(v) + return dict + +def unpackage_from_transmission(data_json_b64): + print('unpackage_from_transmission.data_json_b64 =',data_json_b64) + data_json_bstr = b64decode(data_json_b64).decode() + print('unpackage_from_transmission.data_json_bstr =',data_json_bstr) + + data_json = json.loads(data_json_bstr) + print('unpackage_from_transmission.data_json =',data_json) + + data_json_dejson = dejsonize(data_json) + print('unpackage_from_transmission.data_json =',data_json_dejson) + return data_json + # print(type(data_json_b),'data_json_b1???',data_json_b) + # if type(data_json_b)==bytes and isBase64(data_json_b): data_json_b=b64decode(data_json_b) + # print(type(data_json_b),'data_json_b???',data_json_b) + # # print(type(data_json_b),) + # data_json_s = data_json_b.decode() + # print(type(data_json_s),'data_json_s???',data_json_s) + # data_json = json.loads(data_json_s) + # print(type(data_json),'data_json???',data_json) + # for k,v in data_json.items(): + # if type(v)==bytes: + # if isBase64(v):v=b64decode(v.decode()) + # data_json[k]=v + # elif type(v)==str: + # if isBase64(v): v=b64decode(v.encode()) + # data_json[k]=v + # elif type(v)==dict: + # data_json[k]=unpackage_from_transmission(v) + # return data_json + # Recursive dictionary merge