XEP-0049: Add type hints and switch to default args
This commit is contained in:
parent
77c8caf205
commit
fbb8993244
@ -7,12 +7,19 @@
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
|
from typing import (
|
||||||
|
List,
|
||||||
|
Optional,
|
||||||
|
Union,
|
||||||
|
)
|
||||||
|
from asyncio import Future
|
||||||
|
|
||||||
from slixmpp import Iq
|
from slixmpp import JID
|
||||||
|
from slixmpp.stanza import Iq
|
||||||
from slixmpp.plugins import BasePlugin
|
from slixmpp.plugins import BasePlugin
|
||||||
from slixmpp.xmlstream.handler import Callback
|
from slixmpp.xmlstream.handler import Callback
|
||||||
from slixmpp.xmlstream.matcher import StanzaPath
|
from slixmpp.xmlstream.matcher import StanzaPath
|
||||||
from slixmpp.xmlstream import register_stanza_plugin
|
from slixmpp.xmlstream import register_stanza_plugin, ElementBase
|
||||||
from slixmpp.plugins.xep_0049 import stanza, PrivateXML
|
from slixmpp.plugins.xep_0049 import stanza, PrivateXML
|
||||||
|
|
||||||
|
|
||||||
@ -32,26 +39,25 @@ class XEP_0049(BasePlugin):
|
|||||||
def register(self, stanza):
|
def register(self, stanza):
|
||||||
register_stanza_plugin(PrivateXML, stanza, iterable=True)
|
register_stanza_plugin(PrivateXML, stanza, iterable=True)
|
||||||
|
|
||||||
def store(self, data, ifrom=None, timeout=None, callback=None,
|
def store(self, data: Union[List[ElementBase], ElementBase], ifrom: Optional[JID] = None, **iqkwargs) -> Future:
|
||||||
timeout_callback=None):
|
"""Store data in Private XML Storage.
|
||||||
iq = self.xmpp.Iq()
|
|
||||||
iq['type'] = 'set'
|
:param data: An XML element or list of xml element to store.
|
||||||
iq['from'] = ifrom
|
"""
|
||||||
|
iq = self.xmpp.make_iq_set(ifrom=ifrom)
|
||||||
|
|
||||||
if not isinstance(data, list):
|
if not isinstance(data, list):
|
||||||
data = [data]
|
data = [data]
|
||||||
|
|
||||||
for elem in data:
|
for elem in data:
|
||||||
iq['private'].append(elem)
|
iq['private'].append(elem)
|
||||||
|
|
||||||
return iq.send(timeout=timeout, callback=callback,
|
return iq.send(**iqkwargs)
|
||||||
timeout_callback=timeout_callback)
|
|
||||||
|
|
||||||
def retrieve(self, name, ifrom=None, timeout=None, callback=None,
|
def retrieve(self, name: str, ifrom: Optional[JID] = None, **iqkwargs) -> Future:
|
||||||
timeout_callback=None):
|
"""Get previously stored data from Private XML Storage.
|
||||||
iq = self.xmpp.Iq()
|
|
||||||
iq['type'] = 'get'
|
:param name: Name of the payload to retrieve (slixmpp plugin attribute)
|
||||||
iq['from'] = ifrom
|
"""
|
||||||
|
iq = self.xmpp.make_iq_get(ifrom=ifrom)
|
||||||
iq['private'].enable(name)
|
iq['private'].enable(name)
|
||||||
return iq.send(timeout=timeout, callback=callback,
|
return iq.send(**iqkwargs)
|
||||||
timeout_callback=timeout_callback)
|
|
||||||
|
Loading…
Reference in New Issue
Block a user