def handle_query(self, message): query_message = Serialization.deserialize_sendquery(message) self.clients_lock.acquire() if query_message.user_id in self.clients: aes_key = self.clients[query_message.user_id].symmetric_key self.clients_lock.release() query = query_message.query if self.encryption: query = AES._aes_decrypt_and_decode(aes_key, query_message.query) response = self.__fetch_query.fetch('keyword', query, page=query_message.page) entries = self.__parse_query.parse(response) if self.encryption: return AES._aes_encrypt_and_encode(aes_key, Serialization.serialize_sendqueryresponse(entries)) return base64.b64encode(Serialization.serialize_sendqueryresponse(entries))