Source code for pytdbot.utils.obj_encoder

import json
from base64 import b64encode

from .. import types, utils


[docs] def obj_to_json(obj, **kwargs): return json.dumps(obj_to_dict(obj), **kwargs)
[docs] def obj_to_dict(obj): if hasattr(obj, "to_dict"): return obj_to_dict(obj.to_dict()) elif isinstance(obj, list): return [obj_to_dict(item) for item in obj] elif isinstance(obj, dict): return {key: obj_to_dict(value) for key, value in obj.items()} elif isinstance(obj, bytes): return b64encode(obj).decode("utf-8") else: return obj
[docs] def dict_to_obj(dict_obj, client=None): if isinstance(dict_obj, dict): if "@type" in dict_obj: obj = getattr(types, utils.to_camel_case(dict_obj["@type"])).from_dict( {key: dict_to_obj(value, client) for key, value in dict_obj.items()} ) if client: obj._client = client return obj else: return {key: dict_to_obj(value, client) for key, value in dict_obj.items()} elif isinstance(dict_obj, list): return [dict_to_obj(item, client) for item in dict_obj] else: return dict_obj