Source code for slixmpp.plugins.xep_0049.private_storage
# Slixmpp: The Slick XMPP Library# Copyright (C) 2012 Nathanael C. Fritz, Lance J.T. Stout# This file is part of Slixmpp.# See the file LICENSE for copying permission.importloggingfromtypingimport(List,Optional,Union,)fromasyncioimportFuturefromslixmppimportJIDfromslixmpp.stanzaimportIqfromslixmpp.pluginsimportBasePluginfromslixmpp.xmlstream.handlerimportCallbackfromslixmpp.xmlstream.matcherimportStanzaPathfromslixmpp.xmlstreamimportregister_stanza_plugin,ElementBasefromslixmpp.plugins.xep_0049importstanza,PrivateXMLlog=logging.getLogger(__name__)
[docs]classXEP_0049(BasePlugin):name='xep_0049'description='XEP-0049: Private XML Storage'dependencies={}stanza=stanzadefplugin_init(self):register_stanza_plugin(Iq,PrivateXML)defregister(self,stanza):register_stanza_plugin(PrivateXML,stanza,iterable=True)
[docs]defstore(self,data:Union[List[ElementBase],ElementBase],ifrom:Optional[JID]=None,**iqkwargs)->Future:"""Store data in Private XML Storage. :param data: An XML element or list of xml element to store. """iq=self.xmpp.make_iq_set(ifrom=ifrom)ifnotisinstance(data,list):data=[data]forelemindata:iq['private'].append(elem)returniq.send(**iqkwargs)
[docs]defretrieve(self,name:str,ifrom:Optional[JID]=None,**iqkwargs)->Future:"""Get previously stored data from Private XML Storage. :param name: Name of the payload to retrieve (slixmpp plugin attribute) """iq=self.xmpp.make_iq_get(ifrom=ifrom)iq['private'].enable(name)returniq.send(**iqkwargs)