Compare commits
8 Commits
slix-1.5.0
...
slix-1.5.1
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0dd32be7f5 | ||
|
|
bf69698af1 | ||
|
|
aa732b3c94 | ||
|
|
d076cef023 | ||
|
|
f884b67b8b | ||
|
|
0d3116dbdf | ||
|
|
f1ab9ab964 | ||
|
|
e520ab1f5e |
@@ -33,7 +33,7 @@ class CommandBot(slixmpp.ClientXMPP):
|
||||
# our roster.
|
||||
self.add_event_handler("session_start", self.start)
|
||||
|
||||
def start(self, event):
|
||||
async def start(self, event):
|
||||
"""
|
||||
Process the session_start event.
|
||||
|
||||
@@ -47,7 +47,7 @@ class CommandBot(slixmpp.ClientXMPP):
|
||||
data.
|
||||
"""
|
||||
self.send_presence()
|
||||
self.get_roster()
|
||||
await self.get_roster()
|
||||
|
||||
# We add the command after session_start has fired
|
||||
# to ensure that the correct full JID is used.
|
||||
|
||||
@@ -37,7 +37,7 @@ class CommandUserBot(slixmpp.ClientXMPP):
|
||||
self.add_event_handler("session_start", self.start)
|
||||
self.add_event_handler("message", self.message)
|
||||
|
||||
def start(self, event):
|
||||
async def start(self, event):
|
||||
"""
|
||||
Process the session_start event.
|
||||
|
||||
@@ -51,7 +51,7 @@ class CommandUserBot(slixmpp.ClientXMPP):
|
||||
data.
|
||||
"""
|
||||
self.send_presence()
|
||||
self.get_roster()
|
||||
await self.get_roster()
|
||||
|
||||
# We first create a session dictionary containing:
|
||||
# 'next' -- the handler to execute on a successful response
|
||||
@@ -176,4 +176,4 @@ if __name__ == '__main__':
|
||||
|
||||
# Connect to the XMPP server and start processing XMPP stanzas.
|
||||
xmpp.connect()
|
||||
xmpp.process()
|
||||
xmpp.process(forever=False)
|
||||
|
||||
@@ -30,7 +30,7 @@ class AdminCommands(slixmpp.ClientXMPP):
|
||||
|
||||
self.add_event_handler("session_start", self.start)
|
||||
|
||||
def start(self, event):
|
||||
async def start(self, event):
|
||||
"""
|
||||
Process the session_start event.
|
||||
|
||||
@@ -44,7 +44,7 @@ class AdminCommands(slixmpp.ClientXMPP):
|
||||
data.
|
||||
"""
|
||||
self.send_presence()
|
||||
self.get_roster()
|
||||
await self.get_roster()
|
||||
|
||||
def command_success(iq, session):
|
||||
print('Command completed')
|
||||
|
||||
@@ -69,7 +69,7 @@ class Disco(slixmpp.ClientXMPP):
|
||||
event does not provide any additional
|
||||
data.
|
||||
"""
|
||||
self.get_roster()
|
||||
await self.get_roster()
|
||||
self.send_presence()
|
||||
|
||||
try:
|
||||
|
||||
@@ -159,4 +159,4 @@ if __name__ == '__main__':
|
||||
|
||||
# Connect to the XMPP server and start processing XMPP stanzas.
|
||||
xmpp.connect()
|
||||
xmpp.process()
|
||||
xmpp.process(forever=False)
|
||||
|
||||
@@ -38,7 +38,7 @@ class EchoBot(slixmpp.ClientXMPP):
|
||||
# MUC messages and error messages.
|
||||
self.add_event_handler("message", self.message)
|
||||
|
||||
def start(self, event):
|
||||
async def start(self, event):
|
||||
"""
|
||||
Process the session_start event.
|
||||
|
||||
@@ -52,7 +52,7 @@ class EchoBot(slixmpp.ClientXMPP):
|
||||
data.
|
||||
"""
|
||||
self.send_presence()
|
||||
self.get_roster()
|
||||
await self.get_roster()
|
||||
|
||||
def message(self, msg):
|
||||
"""
|
||||
|
||||
@@ -58,7 +58,7 @@ class GTalkBot(slixmpp.ClientXMPP):
|
||||
logging.error(err.message)
|
||||
self.disconnect()
|
||||
|
||||
def start(self, event):
|
||||
async def start(self, event):
|
||||
"""
|
||||
Process the session_start event.
|
||||
|
||||
@@ -72,7 +72,7 @@ class GTalkBot(slixmpp.ClientXMPP):
|
||||
data.
|
||||
"""
|
||||
self.send_presence()
|
||||
self.get_roster()
|
||||
await self.get_roster()
|
||||
|
||||
def message(self, msg):
|
||||
"""
|
||||
|
||||
@@ -39,7 +39,7 @@ class EchoBot(slixmpp.ClientXMPP):
|
||||
# MUC messages and error messages.
|
||||
self.add_event_handler("message", self.message)
|
||||
|
||||
def start(self, event):
|
||||
async def start(self, event):
|
||||
"""
|
||||
Process the session_start event.
|
||||
|
||||
@@ -53,7 +53,7 @@ class EchoBot(slixmpp.ClientXMPP):
|
||||
data.
|
||||
"""
|
||||
self.send_presence()
|
||||
self.get_roster()
|
||||
await self.get_roster()
|
||||
|
||||
def message(self, msg):
|
||||
"""
|
||||
|
||||
@@ -104,4 +104,4 @@ def on_session2(event):
|
||||
new_xmpp.add_event_handler('session_start', on_session2)
|
||||
|
||||
new_xmpp.connect()
|
||||
new_xmpp.process()
|
||||
new_xmpp.process(forever=False)
|
||||
|
||||
@@ -52,7 +52,7 @@ class MUCBot(slixmpp.ClientXMPP):
|
||||
self.muc_online)
|
||||
|
||||
|
||||
def start(self, event):
|
||||
async def start(self, event):
|
||||
"""
|
||||
Process the session_start event.
|
||||
|
||||
@@ -65,7 +65,7 @@ class MUCBot(slixmpp.ClientXMPP):
|
||||
event does not provide any additional
|
||||
data.
|
||||
"""
|
||||
self.get_roster()
|
||||
await self.get_roster()
|
||||
self.send_presence()
|
||||
self.plugin['xep_0045'].join_muc(self.room,
|
||||
self.nick,
|
||||
|
||||
@@ -51,7 +51,7 @@ class PingTest(slixmpp.ClientXMPP):
|
||||
data.
|
||||
"""
|
||||
self.send_presence()
|
||||
self.get_roster()
|
||||
await self.get_roster()
|
||||
|
||||
try:
|
||||
rtt = await self['xep_0199'].ping(self.pingjid,
|
||||
@@ -109,4 +109,4 @@ if __name__ == '__main__':
|
||||
|
||||
# Connect to the XMPP server and start processing XMPP stanzas.
|
||||
xmpp.connect()
|
||||
xmpp.process()
|
||||
xmpp.process(forever=False)
|
||||
|
||||
@@ -38,7 +38,7 @@ class EchoBot(slixmpp.ClientXMPP):
|
||||
# MUC messages and error messages.
|
||||
self.add_event_handler("message", self.message)
|
||||
|
||||
def start(self, event):
|
||||
async def start(self, event):
|
||||
"""
|
||||
Process the session_start event.
|
||||
|
||||
@@ -52,7 +52,7 @@ class EchoBot(slixmpp.ClientXMPP):
|
||||
data.
|
||||
"""
|
||||
self.send_presence()
|
||||
self.get_roster()
|
||||
await self.get_roster()
|
||||
|
||||
def message(self, msg):
|
||||
"""
|
||||
|
||||
@@ -32,7 +32,7 @@ class PubsubClient(slixmpp.ClientXMPP):
|
||||
self.add_event_handler('session_start', self.start)
|
||||
|
||||
async def start(self, event):
|
||||
self.get_roster()
|
||||
await self.get_roster()
|
||||
self.send_presence()
|
||||
|
||||
try:
|
||||
|
||||
@@ -38,8 +38,8 @@ class PubsubEvents(slixmpp.ClientXMPP):
|
||||
# self.add_event_handler('event_prefix_purge', handler)
|
||||
# self.add_event_handler('event_prefix_delete', handler)
|
||||
|
||||
def start(self, event):
|
||||
self.get_roster()
|
||||
async def start(self, event):
|
||||
await self.get_roster()
|
||||
self.send_presence()
|
||||
|
||||
def _publish(self, msg):
|
||||
|
||||
@@ -47,7 +47,7 @@ class RegisterBot(slixmpp.ClientXMPP):
|
||||
# for data forms and OOB links that will make that easier.
|
||||
self.add_event_handler("register", self.register)
|
||||
|
||||
def start(self, event):
|
||||
async def start(self, event):
|
||||
"""
|
||||
Process the session_start event.
|
||||
|
||||
@@ -61,7 +61,7 @@ class RegisterBot(slixmpp.ClientXMPP):
|
||||
data.
|
||||
"""
|
||||
self.send_presence()
|
||||
self.get_roster()
|
||||
await self.get_roster()
|
||||
|
||||
# We're only concerned about registering, so nothing more to do here.
|
||||
self.disconnect()
|
||||
|
||||
@@ -51,12 +51,8 @@ class RosterBrowser(slixmpp.ClientXMPP):
|
||||
event does not provide any additional
|
||||
data.
|
||||
"""
|
||||
future = asyncio.Future()
|
||||
def callback(result):
|
||||
future.set_result(None)
|
||||
try:
|
||||
self.get_roster(callback=callback)
|
||||
await future
|
||||
await self.get_roster()
|
||||
except IqError as err:
|
||||
print('Error: %s' % err.iq['error']['condition'])
|
||||
except IqTimeout:
|
||||
@@ -138,4 +134,4 @@ if __name__ == '__main__':
|
||||
|
||||
# Connect to the XMPP server and start processing XMPP stanzas.
|
||||
xmpp.connect()
|
||||
xmpp.process()
|
||||
xmpp.process(forever=False)
|
||||
|
||||
@@ -38,7 +38,7 @@ class SendMsgBot(slixmpp.ClientXMPP):
|
||||
# our roster.
|
||||
self.add_event_handler("session_start", self.start)
|
||||
|
||||
def start(self, event):
|
||||
async def start(self, event):
|
||||
"""
|
||||
Process the session_start event.
|
||||
|
||||
@@ -52,7 +52,7 @@ class SendMsgBot(slixmpp.ClientXMPP):
|
||||
data.
|
||||
"""
|
||||
self.send_presence()
|
||||
self.get_roster()
|
||||
await self.get_roster()
|
||||
|
||||
self.send_message(mto=self.recipient,
|
||||
mbody=self.msg,
|
||||
@@ -107,4 +107,4 @@ if __name__ == '__main__':
|
||||
|
||||
# Connect to the XMPP server and start processing XMPP stanzas.
|
||||
xmpp.connect()
|
||||
xmpp.process()
|
||||
xmpp.process(forever=False)
|
||||
|
||||
@@ -46,7 +46,7 @@ class AvatarSetter(slixmpp.ClientXMPP):
|
||||
data.
|
||||
"""
|
||||
self.send_presence()
|
||||
self.get_roster()
|
||||
await self.get_roster()
|
||||
|
||||
avatar_file = None
|
||||
try:
|
||||
@@ -137,4 +137,4 @@ if __name__ == '__main__':
|
||||
|
||||
# Connect to the XMPP server and start processing XMPP stanzas.
|
||||
xmpp.connect()
|
||||
xmpp.process()
|
||||
xmpp.process(forever=False)
|
||||
|
||||
@@ -60,7 +60,7 @@ class ThirdPartyAuthBot(slixmpp.ClientXMPP):
|
||||
# MUC messages and error messages.
|
||||
self.add_event_handler("message", self.message)
|
||||
|
||||
def start(self, event):
|
||||
async def start(self, event):
|
||||
"""
|
||||
Process the session_start event.
|
||||
|
||||
@@ -74,7 +74,7 @@ class ThirdPartyAuthBot(slixmpp.ClientXMPP):
|
||||
data.
|
||||
"""
|
||||
self.send_presence()
|
||||
self.get_roster()
|
||||
await self.get_roster()
|
||||
|
||||
def message(self, msg):
|
||||
"""
|
||||
|
||||
@@ -38,9 +38,9 @@ class LocationBot(ClientXMPP):
|
||||
|
||||
self.current_tune = None
|
||||
|
||||
def start(self, event):
|
||||
async def start(self, event):
|
||||
self.send_presence()
|
||||
self.get_roster()
|
||||
await self.get_roster()
|
||||
self['xep_0115'].update_caps()
|
||||
|
||||
print("Using freegeoip.net to get geolocation.")
|
||||
|
||||
@@ -35,9 +35,9 @@ class TuneBot(ClientXMPP):
|
||||
|
||||
self.current_tune = None
|
||||
|
||||
def start(self, event):
|
||||
async def start(self, event):
|
||||
self.send_presence()
|
||||
self.get_roster()
|
||||
await self.get_roster()
|
||||
self['xep_0115'].update_caps()
|
||||
|
||||
def _update_tune(self):
|
||||
|
||||
@@ -9,5 +9,5 @@
|
||||
# We don't want to have to import the entire library
|
||||
# just to get the version info for setup.py
|
||||
|
||||
__version__ = '1.5.0'
|
||||
__version_info__ = (1, 5, 0)
|
||||
__version__ = '1.5.1'
|
||||
__version_info__ = (1, 5, 1)
|
||||
|
||||
@@ -475,7 +475,7 @@ class XMLStream(asyncio.BaseProtocol):
|
||||
self._current_connection_attempt.cancel()
|
||||
self._current_connection_attempt = None
|
||||
|
||||
def disconnect(self, wait: float = 2.0, reason: Optional[str] = None) -> None:
|
||||
def disconnect(self, wait: float = 2.0, reason: Optional[str] = None, ignore_send_queue: bool = False) -> None:
|
||||
"""Close the XML stream and wait for an acknowldgement from the server for
|
||||
at most `wait` seconds. After the given number of seconds has
|
||||
passed without a response from the server, or when the server
|
||||
@@ -495,16 +495,32 @@ class XMLStream(asyncio.BaseProtocol):
|
||||
if wait == True:
|
||||
wait = 2.0
|
||||
|
||||
self.disconnect_reason = reason
|
||||
self.cancel_connection_attempt()
|
||||
if self.transport:
|
||||
if wait > 0.0:
|
||||
self.send_raw(self.stream_footer)
|
||||
self.schedule('Disconnect wait', wait,
|
||||
self.abort, repeat=False)
|
||||
if self.waiting_queue.empty() or ignore_send_queue:
|
||||
self.disconnect_reason = reason
|
||||
self.cancel_connection_attempt()
|
||||
if wait > 0.0:
|
||||
self.send_raw(self.stream_footer)
|
||||
self.schedule('Disconnect wait', wait,
|
||||
self.abort, repeat=False)
|
||||
else:
|
||||
asyncio.ensure_future(
|
||||
self._consume_send_queue_before_disconnecting(reason, wait),
|
||||
loop=self.loop,
|
||||
)
|
||||
else:
|
||||
self.event("disconnected", reason)
|
||||
|
||||
async def _consume_send_queue_before_disconnecting(self, reason: Optional[str], wait: float):
|
||||
"""Wait until the send queue is empty before disconnecting"""
|
||||
await self.waiting_queue.join()
|
||||
self.disconnect_reason = reason
|
||||
self.cancel_connection_attempt()
|
||||
if wait > 0.0:
|
||||
self.send_raw(self.stream_footer)
|
||||
self.schedule('Disconnect wait', wait,
|
||||
self.abort, repeat=False)
|
||||
|
||||
def abort(self):
|
||||
"""
|
||||
Forcibly close the connection
|
||||
@@ -899,7 +915,9 @@ class XMLStream(asyncio.BaseProtocol):
|
||||
Execute the callback and remove the handler for it.
|
||||
"""
|
||||
self._safe_cb_run(name, cb)
|
||||
del self.scheduled_events[name]
|
||||
# workaround for specific events which unschedule themselves
|
||||
if name in self.scheduled_events:
|
||||
del self.scheduled_events[name]
|
||||
|
||||
def incoming_filter(self, xml):
|
||||
"""Filter incoming XML objects before they are processed.
|
||||
|
||||
Reference in New Issue
Block a user