Exemple #1
0
    def __init__(self, store_user_data=True, store_chat_data=True, user_data_json='',
                 chat_data_json='', conversations_json=''):
        self.store_user_data = store_user_data
        self.store_chat_data = store_chat_data
        self._user_data = None
        self._chat_data = None
        self._conversations = None
        self._user_data_json = None
        self._chat_data_json = None
        self._conversations_json = None
        if user_data_json:
            try:
                self._user_data = decode_user_chat_data_from_json(user_data_json)
                self._user_data_json = user_data_json
            except (ValueError, AttributeError):
                raise TypeError("Unable to deserialize user_data_json. Not valid JSON")
        if chat_data_json:
            try:
                self._chat_data = decode_user_chat_data_from_json(chat_data_json)
                self._chat_data_json = chat_data_json
            except (ValueError, AttributeError):
                raise TypeError("Unable to deserialize chat_data_json. Not valid JSON")

        if conversations_json:
            try:
                self._conversations = decode_conversations_from_json(conversations_json)
                self._conversations_json = conversations_json
            except (ValueError, AttributeError):
                raise TypeError("Unable to deserialize conversations_json. Not valid JSON")
Exemple #2
0
    def __init__(self,
                 store_user_data=True,
                 store_chat_data=True,
                 store_bot_data=True,
                 user_data_json='',
                 chat_data_json='',
                 bot_data_json='',
                 conversations_json=''):
        super().__init__(store_user_data=store_user_data,
                         store_chat_data=store_chat_data,
                         store_bot_data=store_bot_data)
        self._user_data = None
        self._chat_data = None
        self._bot_data = None
        self._conversations = None
        self._user_data_json = None
        self._chat_data_json = None
        self._bot_data_json = None
        self._conversations_json = None
        if user_data_json:
            try:
                self._user_data = decode_user_chat_data_from_json(
                    user_data_json)
                self._user_data_json = user_data_json
            except (ValueError, AttributeError):
                raise TypeError(
                    "Unable to deserialize user_data_json. Not valid JSON")
        if chat_data_json:
            try:
                self._chat_data = decode_user_chat_data_from_json(
                    chat_data_json)
                self._chat_data_json = chat_data_json
            except (ValueError, AttributeError):
                raise TypeError(
                    "Unable to deserialize chat_data_json. Not valid JSON")
        if bot_data_json:
            try:
                self._bot_data = json.loads(bot_data_json)
                self._bot_data_json = bot_data_json
            except (ValueError, AttributeError):
                raise TypeError(
                    "Unable to deserialize bot_data_json. Not valid JSON")
            if not isinstance(self._bot_data, dict):
                raise TypeError("bot_data_json must be serialized dict")

        if conversations_json:
            try:
                self._conversations = decode_conversations_from_json(
                    conversations_json)
                self._conversations_json = conversations_json
            except (ValueError, AttributeError):
                raise TypeError(
                    "Unable to deserialize conversations_json. Not valid JSON")
Exemple #3
0
    def chat_data(self):
        chat_data = self.firebase.get(f'/{self.CHAT_DATA_KEY}', None)
        if chat_data is None:
            chat_data = {}

        chat_data = decode_user_chat_data_from_json(json.dumps(chat_data))
        return defaultdict(dict, chat_data)
Exemple #4
0
    def user_data(self):
        user_data = self.firebase.get(f'/{self.USER_DATA_KEY}', None)
        if user_data is None:
            user_data = {}

        user_data = decode_user_chat_data_from_json(json.dumps(user_data))
        return defaultdict(dict, user_data)
Exemple #5
0
 def get_chat_data(self):
     data = self.db.get('chat_data')
     if data is None:
         chat_data = defaultdict(dict)
     else:
         chat_data = defaultdict(dict, decode_user_chat_data_from_json(data.decode()))
     return chat_data
Exemple #6
0
 def load_user_chat_data(self, data_type):
     try:
         json_data_full = defaultdict(dict)
         for file in self.file_list(directory=self.main_node,
                                    file_type=data_type):
             node_data, stat = self.zoo_client.get(file)
             json_data = decode_user_chat_data_from_json(
                 node_data.decode('utf-8'))
             json_data_concat = {**json_data, **json_data_full}
             json_data_full = json_data_concat
         return deepcopy(json_data_full)
     except Exception as ex:
         logger.error('Error read data from node with Exception: %s' % ex)
         return None
    def __init__(
        self,
        store_user_data: bool = True,
        store_chat_data: bool = True,
        store_bot_data: bool = True,
        user_data_json: str = '',
        chat_data_json: str = '',
        bot_data_json: str = '',
        conversations_json: str = '',
        store_callback_data: bool = False,
        callback_data_json: str = '',
    ):
        super().__init__(
            store_user_data=store_user_data,
            store_chat_data=store_chat_data,
            store_bot_data=store_bot_data,
            store_callback_data=store_callback_data,
        )
        self._user_data = None
        self._chat_data = None
        self._bot_data = None
        self._callback_data = None
        self._conversations = None
        self._user_data_json = None
        self._chat_data_json = None
        self._bot_data_json = None
        self._callback_data_json = None
        self._conversations_json = None
        if user_data_json:
            try:
                self._user_data = decode_user_chat_data_from_json(
                    user_data_json)
                self._user_data_json = user_data_json
            except (ValueError, AttributeError) as exc:
                raise TypeError(
                    "Unable to deserialize user_data_json. Not valid JSON"
                ) from exc
        if chat_data_json:
            try:
                self._chat_data = decode_user_chat_data_from_json(
                    chat_data_json)
                self._chat_data_json = chat_data_json
            except (ValueError, AttributeError) as exc:
                raise TypeError(
                    "Unable to deserialize chat_data_json. Not valid JSON"
                ) from exc
        if bot_data_json:
            try:
                self._bot_data = json.loads(bot_data_json)
                self._bot_data_json = bot_data_json
            except (ValueError, AttributeError) as exc:
                raise TypeError(
                    "Unable to deserialize bot_data_json. Not valid JSON"
                ) from exc
            if not isinstance(self._bot_data, dict):
                raise TypeError("bot_data_json must be serialized dict")
        if callback_data_json:
            try:
                data = json.loads(callback_data_json)
            except (ValueError, AttributeError) as exc:
                raise TypeError(
                    "Unable to deserialize callback_data_json. Not valid JSON"
                ) from exc
            # We are a bit more thorough with the checking of the format here, because it's
            # more complicated than for the other things
            try:
                if data is None:
                    self._callback_data = None
                else:
                    self._callback_data = cast(
                        CDCData,
                        ([(one, float(two), three)
                          for one, two, three in data[0]], data[1]),
                    )
                self._callback_data_json = callback_data_json
            except (ValueError, IndexError) as exc:
                raise TypeError(
                    "callback_data_json is not in the required format"
                ) from exc
            if self._callback_data is not None and (not all(
                    isinstance(entry[2], dict) and isinstance(entry[0], str)
                    for entry in self._callback_data[0]) or not isinstance(
                        self._callback_data[1], dict)):
                raise TypeError(
                    "callback_data_json is not in the required format")

        if conversations_json:
            try:
                self._conversations = decode_conversations_from_json(
                    conversations_json)
                self._conversations_json = conversations_json
            except (ValueError, AttributeError) as exc:
                raise TypeError(
                    "Unable to deserialize conversations_json. Not valid JSON"
                ) from exc