summaryrefslogtreecommitdiff
path: root/slixmpp
diff options
context:
space:
mode:
authormathieui <mathieui@mathieui.net>2021-02-14 11:45:03 +0100
committermathieui <mathieui@mathieui.net>2021-02-26 00:08:56 +0100
commit0b6326e1cce9e85430fa8015f35a9c19d5d59aaf (patch)
tree6d0630d5363c106325fdf9291af2aa35ee3fef4b /slixmpp
parentd51c4e307d79cad2eaf42ce52c4f17454475f44d (diff)
downloadslixmpp-0b6326e1cce9e85430fa8015f35a9c19d5d59aaf.tar.gz
slixmpp-0b6326e1cce9e85430fa8015f35a9c19d5d59aaf.tar.bz2
slixmpp-0b6326e1cce9e85430fa8015f35a9c19d5d59aaf.tar.xz
slixmpp-0b6326e1cce9e85430fa8015f35a9c19d5d59aaf.zip
XEP-0012: API changes.
Diffstat (limited to 'slixmpp')
-rw-r--r--slixmpp/plugins/xep_0012/last_activity.py54
1 files changed, 38 insertions, 16 deletions
diff --git a/slixmpp/plugins/xep_0012/last_activity.py b/slixmpp/plugins/xep_0012/last_activity.py
index 27e16e21..61531431 100644
--- a/slixmpp/plugins/xep_0012/last_activity.py
+++ b/slixmpp/plugins/xep_0012/last_activity.py
@@ -16,7 +16,7 @@ from slixmpp import future_wrapper, JID
from slixmpp.stanza import Iq
from slixmpp.exceptions import XMPPError
from slixmpp.xmlstream import JID, register_stanza_plugin
-from slixmpp.xmlstream.handler import Callback
+from slixmpp.xmlstream.handler import CoroutineCallback
from slixmpp.xmlstream.matcher import StanzaPath
from slixmpp.plugins.xep_0012 import stanza, LastActivity
@@ -41,7 +41,7 @@ class XEP_0012(BasePlugin):
self._last_activities = {}
self.xmpp.register_handler(
- Callback('Last Activity',
+ CoroutineCallback('Last Activity',
StanzaPath('iq@type=get/last_activity'),
self._handle_get_last_activity))
@@ -62,28 +62,50 @@ class XEP_0012(BasePlugin):
def session_bind(self, jid):
self.xmpp['xep_0030'].add_feature('jabber:iq:last')
- def begin_idle(self, jid: Optional[JID] = None, status: str = None):
+ def begin_idle(self, jid: Optional[JID] = None, status: Optional[str] = None) -> Future:
"""Reset the last activity for the given JID.
+ .. versionchanged:: 1.8.0
+ This function now returns a Future.
+
:param status: Optional status.
"""
- self.set_last_activity(jid, 0, status)
+ return self.set_last_activity(jid, 0, status)
+
+ def end_idle(self, jid: Optional[JID] = None) -> Future:
+ """Remove the last activity of a JID.
- def end_idle(self, jid=None):
- self.del_last_activity(jid)
+ .. versionchanged:: 1.8.0
+ This function now returns a Future.
+ """
+ return self.del_last_activity(jid)
- def start_uptime(self, status=None):
- self.set_last_activity(None, 0, status)
+ def start_uptime(self, status: Optional[str] = None) -> Future:
+ """
+ .. versionchanged:: 1.8.0
+ This function now returns a Future.
+ """
+ return self.set_last_activity(None, 0, status)
- def set_last_activity(self, jid=None, seconds=None, status=None):
- self.api['set_last_activity'](jid, args={
+ def set_last_activity(self, jid=None, seconds=None, status=None) -> Future:
+ """Set last activity for a JID.
+
+ .. versionchanged:: 1.8.0
+ This function now returns a Future.
+ """
+ return self.api['set_last_activity'](jid, args={
'seconds': seconds,
- 'status': status})
+ 'status': status
+ })
- def del_last_activity(self, jid):
- self.api['del_last_activity'](jid)
+ def del_last_activity(self, jid: JID) -> Future:
+ """Remove the last activity of a JID.
+
+ .. versionchanged:: 1.8.0
+ This function now returns a Future.
+ """
+ return self.api['del_last_activity'](jid)
- @future_wrapper
def get_last_activity(self, jid: JID, local: bool = False,
ifrom: Optional[JID] = None, **iqkwargs) -> Future:
"""Get last activity for a specific JID.
@@ -109,10 +131,10 @@ class XEP_0012(BasePlugin):
iq.enable('last_activity')
return iq.send(**iqkwargs)
- def _handle_get_last_activity(self, iq: Iq):
+ async def _handle_get_last_activity(self, iq: Iq):
log.debug("Received last activity query from " + \
"<%s> to <%s>.", iq['from'], iq['to'])
- reply = self.api['get_last_activity'](iq['to'], None, iq['from'], iq)
+ reply = await self.api['get_last_activity'](iq['to'], None, iq['from'], iq)
reply.send()
# =================================================================