diff options
Diffstat (limited to 'src/core')
-rw-r--r-- | src/core/commands.py | 31 | ||||
-rw-r--r-- | src/core/completions.py | 17 | ||||
-rw-r--r-- | src/core/core.py | 4 | ||||
-rw-r--r-- | src/core/handlers.py | 60 |
4 files changed, 49 insertions, 63 deletions
diff --git a/src/core/commands.py b/src/core/commands.py index 5f1af49c..bb6210dc 100644 --- a/src/core/commands.py +++ b/src/core/commands.py @@ -275,7 +275,6 @@ def command_list(self, arg): self.add_tab(list_tab, True) cb = list_tab.on_muc_list_item_received self.xmpp.plugin['xep_0030'].get_items(jid=server, - block=False, callback=cb) def command_version(self, arg): @@ -695,7 +694,6 @@ def command_last_activity(self, arg): if jid == '': return self.command_help('last_activity') self.xmpp.plugin['xep_0012'].get_last_activity(jid, - block=False, callback=callback) def command_mood(self, arg): @@ -704,7 +702,8 @@ def command_mood(self, arg): """ args = common.shell_split(arg) if not args: - return self.xmpp.plugin['xep_0107'].stop(block=False) + self.xmpp.plugin['xep_0107'].stop() + return mood = args[0] if mood not in pep.MOODS: return self.information(_('%s is not a correct value for a mood.') @@ -714,10 +713,8 @@ def command_mood(self, arg): text = args[1] else: text = None - self.xmpp.plugin['xep_0107'].publish_mood(mood, - text, - callback=dumb_callback, - block=False) + self.xmpp.plugin['xep_0107'].publish_mood(mood, text, + callback=dumb_callback) def command_activity(self, arg): """ @@ -726,7 +723,8 @@ def command_activity(self, arg): args = common.shell_split(arg) length = len(args) if not length: - return self.xmpp.plugin['xep_0108'].stop(block=False) + self.xmpp.plugin['xep_0108'].stop() + return general = args[0] if general not in pep.ACTIVITIES: return self.information(_('%s is not a correct value for an activity') @@ -746,11 +744,8 @@ def command_activity(self, arg): return self.information(_('%s is not a correct value ' 'for an activity') % specific, _('Error')) - self.xmpp.plugin['xep_0108'].publish_activity(general, - specific, - text, - callback=dumb_callback, - block=False) + self.xmpp.plugin['xep_0108'].publish_activity(general, specific, text, + callback=dumb_callback) def command_gaming(self, arg): """ @@ -758,7 +753,8 @@ def command_gaming(self, arg): """ args = common.shell_split(arg) if not args: - return self.xmpp.plugin['xep_0196'].stop(block=False) + self.xmpp.plugin['xep_0196'].stop() + return name = args[0] if len(args) > 1: address = args[1] @@ -766,8 +762,7 @@ def command_gaming(self, arg): address = None return self.xmpp.plugin['xep_0196'].publish_gaming(name=name, server_address=address, - callback=dumb_callback, - block=False) + callback=dumb_callback) def command_invite(self, arg): """/invite <to> <room> [reason]""" @@ -956,9 +951,7 @@ def command_adhoc(self, arg): list_tab = tabs.AdhocCommandsListTab(jid) self.add_tab(list_tab, True) cb = list_tab.on_list_received - self.xmpp.plugin['xep_0050'].get_commands(jid=jid, - local=False, - block=False, + self.xmpp.plugin['xep_0050'].get_commands(jid=jid, local=False, callback=cb) def command_self(self, arg=None): diff --git a/src/core/completions.py b/src/core/completions.py index f8fb7fc8..7acddef9 100644 --- a/src/core/completions.py +++ b/src/core/completions.py @@ -106,22 +106,7 @@ def completion_join(self, the_input): if the_input.last_completion: return the_input.new_completion([], 1, quotify=True) - if jid.server and not jid.user: - # no room was given: complete the node - try: - response = self.xmpp.plugin['xep_0030'].get_items(jid=jid.server, block=True, timeout=1) - except: - log.error('/join completion: Unable to get the list of rooms for %s', - jid.server, - exc_info=True) - response = None - if response: - items = response['disco_items'].get_items() - else: - return True - items = sorted('%s/%s' % (tup[0], jid.resource) for tup in items) - return the_input.new_completion(items, 1, quotify=True, override=True) - elif jid.user: + if jid.user: # we are writing the server: complete the server serv_list = [] for tab in self.get_tabs(tabs.MucTab): diff --git a/src/core/core.py b/src/core/core.py index 6821df92..906cc2a8 100644 --- a/src/core/core.py +++ b/src/core/core.py @@ -849,8 +849,8 @@ class Core(object): self.xmpp.plugin['xep_0045'].invite(room, jid, reason=reason or '') - self.xmpp.plugin['xep_0030'].get_info(jid=jid, block=False, - timeout=5, callback=callback) + self.xmpp.plugin['xep_0030'].get_info(jid=jid, timeout=5, + callback=callback) def get_error_message(self, stanza, deprecated=False): """ diff --git a/src/core/handlers.py b/src/core/handlers.py index 589b2a48..129dfadb 100644 --- a/src/core/handlers.py +++ b/src/core/handlers.py @@ -8,6 +8,7 @@ log = logging.getLogger(__name__) import curses import ssl import time +import functools from hashlib import sha1 from gettext import gettext as _ @@ -48,47 +49,54 @@ def on_session_start_features(self, _): self.xmpp.plugin['xep_0280'].enable() self.xmpp.add_event_handler('carbon_received', self.on_carbon_received) self.xmpp.add_event_handler('carbon_sent', self.on_carbon_sent) - features = self.xmpp.plugin['xep_0030'].get_info(jid=self.xmpp.boundjid.domain, callback=callback, block=False) + + self.xmpp.plugin['xep_0030'].get_info(jid=self.xmpp.boundjid.domain, + callback=callback) def on_carbon_received(self, message): """ Carbon <received/> received """ + def ignore_message(recv): + log.debug('%s has category conference, ignoring carbon', + recv['from'].server) + def receive_message(recv): + recv['to'] = self.xmpp.boundjid.full + if recv['receipt']: + return self.on_receipt(recv) + self.on_normal_message(recv) + recv = message['carbon_received'] if (recv['from'].bare not in roster or - roster[recv['from'].bare].subscription == 'none'): - try: - if fixes.has_identity(self.xmpp, recv['from'].server, - identity='conference'): - log.debug('%s has category conference, ignoring carbon', - recv['from'].server) - return - except: - log.debug('Traceback when getting the identity of a server:', - exc_info=True) - recv['to'] = self.xmpp.boundjid.full - if recv['receipt']: - return self.on_receipt(recv) - self.on_normal_message(recv) + roster[recv['from'].bare].subscription == 'none'): + fixes.has_identity(self.xmpp, recv['from'].server, + identity='conference', + on_true=functools.partial(ignore_message, recv), + on_false=functools.partial(receive_message, recv)) + return + else: + receive_message(recv) def on_carbon_sent(self, message): """ Carbon <sent/> received """ + def ignore_message(sent): + log.debug('%s has category conference, ignoring carbon', + sent['to'].server) + def send_message(sent): + sent['from'] = self.xmpp.boundjid.full + self.on_normal_message(sent) + sent = message['carbon_sent'] if (sent['to'].bare not in roster or roster[sent['to'].bare].subscription == 'none'): - try: - if fixes.has_identity(self.xmpp, sent['to'].server, - identity='conference'): - log.debug('%s has category conference, ignoring carbon', - sent['to'].server) - return - except: - log.debug('Traceback when getting the identity of a server:', - exc_info=True) - sent['from'] = self.xmpp.boundjid.full - self.on_normal_message(sent) + fixes.has_identity(self.xmpp, sent['to'].server, + identity='conference', + on_true=functools.partial(ignore_message, sent), + on_false=functools.partial(send_message, sent)) + else: + send_message(sent) ### Invites ### |