From 77cb51a01fb25ed0eb56e07adbc2ddc9946fa14d Mon Sep 17 00:00:00 2001 From: ksya Date: Sun, 29 Sep 2019 11:52:57 +0200 Subject: [PATCH 1/2] Add support for carbons (messages from and to other client) and add disconnected event --- aionefit/__init__.py | 3 +++ aionefit/provider/slixmpp_impl.py | 36 +++++++++++++++++++++++++------ 2 files changed, 32 insertions(+), 7 deletions(-) diff --git a/aionefit/__init__.py b/aionefit/__init__.py index 1dc2786..e0c7819 100755 --- a/aionefit/__init__.py +++ b/aionefit/__init__.py @@ -54,6 +54,9 @@ def connect(self): def disconnect(self): self.xmppclient.disconnect() + def disconnected_callback(self): + _LOGGER.debug("Connection was closed") + def raw_message_callback(self, msg): if msg['type'] in ('chat', 'normal'): headers = msg['body'].split("\n")[:-1] diff --git a/aionefit/provider/slixmpp_impl.py b/aionefit/provider/slixmpp_impl.py index 657c02f..8325cbd 100644 --- a/aionefit/provider/slixmpp_impl.py +++ b/aionefit/provider/slixmpp_impl.py @@ -3,7 +3,6 @@ import logging from slixmpp.xmlstream import tostring - _LOGGER = logging.getLogger(__name__) @@ -15,25 +14,31 @@ def __init__(self, jid, password, encryption, nefit_client=None): slixmpp.ClientXMPP.__init__(self, jid, password, sasl_mech="DIGEST-MD5") - - self.netfit_client = nefit_client + self.jid = jid + self.nefit_client = nefit_client # the event signaling, that the connection is established self.connected_event = asyncio.Event() self.message_event = asyncio.Event() # set the various callback handlers self.add_event_handler('session_start', self.session_start) + self.add_event_handler('session_end', self.session_start) self.add_event_handler('message', self.message_callback) + self.add_event_handler('carbon_received', self.carbonmsg_recv_callblack) + self.add_event_handler('carbon_sent', self.carbonmsg_sent_callblack) self.add_event_handler('failed_auth', self.on_failed_auth) self.add_event_handler('auth_success', self.on_auth_success) - self.register_plugin('xep_0199') + self.register_plugin('xep_0199') #ping + #self.register_plugin('xep_0030') #discovery + self.register_plugin('xep_0280') #carbons self.encryption = encryption + def on_failed_auth(self, event): """Callback handler for an unsuccessfull authentication. """ - if self.netfit_client.failed_auth_handler: - self.netfit_client.failed_auth_handler(event) + if self.nefit_client.failed_auth_handler: + self.nefit_client.failed_auth_handler(event) else: _LOGGER.error('failed_auth event: %s', event) raise SystemError('Invalid login. Check credentials ' + @@ -49,14 +54,31 @@ def session_start(self, event): """ self.send_presence() self.get_roster() + #self.update_roster(self.jid, subscription='both') + #self['xep_0030'].get_info(jid=self.jid) + self['xep_0280'].enable() self.connected_event.set() + def session_end(self, event): + self.nefit_client.disconnected_callback() + def message_callback(self, msg): """Callback handler for a received message. """ - self.netfit_client.raw_message_callback(msg) + self.nefit_client.raw_message_callback(msg) self.message_event.set() + def carbonmsg_recv_callblack(self, msg): + """Callback handler for a received carbon message. + """ + self.nefit_client.raw_message_callback(msg['carbon_received']) + self.message_event.set() + + def carbonmsg_sent_callblack(self, msg): + """Callback handler for a sent carbon message. + """ + _LOGGER.debug('Carbon sent: %s', msg['carbon_sent']) + def send_message(self, mto, mbody, msubject=None, mtype=None, mhtml=None, mfrom=None, mnick=None): From 93294ce3fc1fb92a083f59ffd54b0245cd59ae0e Mon Sep 17 00:00:00 2001 From: ksya Date: Mon, 30 Sep 2019 00:01:37 +0200 Subject: [PATCH 2/2] Small cleanup and fix disconnected event --- aionefit/__init__.py | 3 --- aionefit/provider/slixmpp_impl.py | 10 ++++------ 2 files changed, 4 insertions(+), 9 deletions(-) diff --git a/aionefit/__init__.py b/aionefit/__init__.py index e0c7819..1dc2786 100755 --- a/aionefit/__init__.py +++ b/aionefit/__init__.py @@ -54,9 +54,6 @@ def connect(self): def disconnect(self): self.xmppclient.disconnect() - def disconnected_callback(self): - _LOGGER.debug("Connection was closed") - def raw_message_callback(self, msg): if msg['type'] in ('chat', 'normal'): headers = msg['body'].split("\n")[:-1] diff --git a/aionefit/provider/slixmpp_impl.py b/aionefit/provider/slixmpp_impl.py index 8325cbd..37fdabf 100644 --- a/aionefit/provider/slixmpp_impl.py +++ b/aionefit/provider/slixmpp_impl.py @@ -14,22 +14,21 @@ def __init__(self, jid, password, encryption, nefit_client=None): slixmpp.ClientXMPP.__init__(self, jid, password, sasl_mech="DIGEST-MD5") - self.jid = jid self.nefit_client = nefit_client # the event signaling, that the connection is established self.connected_event = asyncio.Event() + self.disconnected_event = asyncio.Event() self.message_event = asyncio.Event() # set the various callback handlers self.add_event_handler('session_start', self.session_start) - self.add_event_handler('session_end', self.session_start) + self.add_event_handler('session_end', self.session_end) self.add_event_handler('message', self.message_callback) self.add_event_handler('carbon_received', self.carbonmsg_recv_callblack) self.add_event_handler('carbon_sent', self.carbonmsg_sent_callblack) self.add_event_handler('failed_auth', self.on_failed_auth) self.add_event_handler('auth_success', self.on_auth_success) self.register_plugin('xep_0199') #ping - #self.register_plugin('xep_0030') #discovery self.register_plugin('xep_0280') #carbons self.encryption = encryption @@ -54,13 +53,12 @@ def session_start(self, event): """ self.send_presence() self.get_roster() - #self.update_roster(self.jid, subscription='both') - #self['xep_0030'].get_info(jid=self.jid) self['xep_0280'].enable() self.connected_event.set() def session_end(self, event): - self.nefit_client.disconnected_callback() + _LOGGER.debug("Connection was closed") + self.disconnected_event.set() def message_callback(self, msg): """Callback handler for a received message.