XEP-0012: API changes.
This commit is contained in:
@@ -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=None):
|
||||
self.del_last_activity(jid)
|
||||
def end_idle(self, jid: Optional[JID] = None) -> Future:
|
||||
"""Remove the last activity of a JID.
|
||||
|
||||
def start_uptime(self, status=None):
|
||||
self.set_last_activity(None, 0, status)
|
||||
.. versionchanged:: 1.8.0
|
||||
This function now returns a Future.
|
||||
"""
|
||||
return self.del_last_activity(jid)
|
||||
|
||||
def set_last_activity(self, jid=None, seconds=None, status=None):
|
||||
self.api['set_last_activity'](jid, args={
|
||||
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) -> 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()
|
||||
|
||||
# =================================================================
|
||||
|
||||
Reference in New Issue
Block a user