def on_incoming_message(request, info, status, error_message): """ Message came in for us """ global _IncomingMessageCallbacks if _Debug: lg.out( _DebugLevel, "message.on_incoming_message new PrivateMessage %r from %s" % ( request.PacketID, request.OwnerID, )) private_message_object = PrivateMessage.deserialize(request.Payload) if private_message_object is None: lg.err( "PrivateMessage deserialize failed, can not extract message from request payload of %d bytes" % len(request.Payload)) return False try: decrypted_message = private_message_object.decrypt() json_message = serialization.BytesToDict( decrypted_message, unpack_types=True, encoding='utf-8', ) json_message = jsn.dict_keys_to_text( jsn.dict_values_to_text(json_message)) except: lg.exc() return False if request.PacketID in received_messages_ids(): lg.warn("skip incoming message %s because found in recent history" % request.PacketID) return False received_messages_ids().append(request.PacketID) if len(received_messages_ids()) > 100: received_messages_ids(True) handled = False try: for cb in _IncomingMessageCallbacks: handled = cb(request, private_message_object, json_message) if _Debug: lg.args(_DebugLevel, cb=cb, packet_id=request.PacketID, handled=handled) if handled: break except: lg.exc() if _Debug: lg.args(_DebugLevel, msg=json_message, handled=handled) if handled: return True if config.conf().getBool( 'services/private-messages/acknowledge-unread-messages-enabled'): p2p_service.SendAckNoRequest(request.OwnerID, request.PacketID, response='unread') return True
def get_supplier_meta_info(supplier_idurl, customer_idurl=None): """ """ global _SuppliersMetaInfo if not customer_idurl: customer_idurl = my_id.getLocalID() customer_idurl = id_url.field(customer_idurl) supplier_idurl = id_url.field(supplier_idurl) return jsn.dict_keys_to_text(jsn.dict_values_to_text( _SuppliersMetaInfo.get(customer_idurl, {}).get(supplier_idurl, {})))
def get_supplier_meta_info(supplier_idurl, customer_idurl=None): """ """ global _SuppliersMetaInfo if not customer_idurl: customer_idurl = my_id.getIDURL() if not id_url.is_cached(customer_idurl) or not id_url.is_cached(supplier_idurl): return {} customer_idurl = id_url.field(customer_idurl) supplier_idurl = id_url.field(supplier_idurl) return jsn.dict_keys_to_text(jsn.dict_values_to_text( _SuppliersMetaInfo.get(customer_idurl, {}).get(supplier_idurl, {})))
def get_customer_meta_info(customer_idurl): """ """ global _CustomersMetaInfo customer_idurl = id_url.field(customer_idurl) if not customer_idurl.is_latest(): if customer_idurl.original() in _CustomersMetaInfo: if customer_idurl.to_bin() not in _CustomersMetaInfo: _CustomersMetaInfo[customer_idurl.to_bin()] = _CustomersMetaInfo.pop(customer_idurl.original()) lg.info('detected and processed idurl rotate for customer meta info : %r -> %r' % ( customer_idurl.original(), customer_idurl.to_bin())) customer_idurl = id_url.to_bin(customer_idurl) return jsn.dict_keys_to_text(jsn.dict_values_to_text(_CustomersMetaInfo.get(customer_idurl, {})))
def load_customers(path=None): """ Load customers list from disk. """ global _CustomersMetaInfo if path is None: path = settings.CustomerIDsFilename() lst = bpio._read_list(path) if lst is None: lst = list() lst = list(filter(id_url.is_cached, lst)) set_customers(lst) _CustomersMetaInfo = jsn.loads( local_fs.ReadTextFile(settings.CustomersMetaInfoFilename()) or '{}', keys_to_bin=True, ) _CustomersMetaInfo = id_url.to_bin_dict(_CustomersMetaInfo) _CustomersMetaInfo = jsn.dict_values_to_text(_CustomersMetaInfo) if _Debug: lg.out(_DebugLevel, 'contactsdb.load_customers %d items' % len(lst))