From d4c627d71fc6abd67fca69289b609df632160877 Mon Sep 17 00:00:00 2001 From: souliane Date: Tue, 24 Mar 2015 07:34:32 +0100 Subject: [PATCH] plugins XEP-0045, XEP-0249: allow to join / invite without specifying the JID's host part (use client's values) --- src/core/constants.py | 2 +- src/plugins/plugin_xep_0045.py | 8 ++++---- src/plugins/plugin_xep_0249.py | 17 ++++++++--------- 3 files changed, 13 insertions(+), 14 deletions(-) diff --git a/src/core/constants.py b/src/core/constants.py index 9225f1a0..5a3af69b 100644 --- a/src/core/constants.py +++ b/src/core/constants.py @@ -32,7 +32,7 @@ class Const(object): APP_NAME_FILE = u'sat' APP_NAME_FULL = u'%s (%s)' % (APP_NAME_SHORT, APP_NAME) APP_VERSION = u'0.5.1D' # Please add 'D' at the end for dev versions - APP_URL = 'http://salut-a-toi.org' + APP_URL = u'http://salut-a-toi.org' # Protocol diff --git a/src/plugins/plugin_xep_0045.py b/src/plugins/plugin_xep_0045.py index f93d8def..bac713b1 100755 --- a/src/plugins/plugin_xep_0045.py +++ b/src/plugins/plugin_xep_0045.py @@ -363,13 +363,13 @@ class XEP_0045(object): if not self.checkClient(profile): return if room_jid_s: + muc_service = self.host.getClient(profile).muc_service try: room_jid = jid.JID(room_jid_s) except (RuntimeError, jid.InvalidFormat, AttributeError): - mess = _("Invalid room JID: %s") % room_jid_s - log.warning(mess) - self.host.bridge.newAlert(mess, _("Group chat error"), "ERROR", profile) - return defer.succeed(None) + return defer.fail(jid.InvalidFormat(_(u"Invalid room identifier: '%s'. Please give a room short or full identifier like 'room' or 'room@%s'.") % (room_jid_s, unicode(muc_service)))) + if not room_jid.user: + room_jid.user, room_jid.host = room_jid.host, muc_service else: room_jid = self.getUniqueName(profile_key=profile_key) # TODO: error management + signal in bridge diff --git a/src/plugins/plugin_xep_0249.py b/src/plugins/plugin_xep_0249.py index 99e70b3d..dad4d167 100755 --- a/src/plugins/plugin_xep_0249.py +++ b/src/plugins/plugin_xep_0249.py @@ -171,18 +171,17 @@ class XEP_0249(object): @command (group): JID - JID: the JID of the person to invite """ - jid_s = mess_data["unparsed"].strip() + contact_jid_s = mess_data["unparsed"].strip() + my_host = self.host.profiles[profile].jid.host try: - assert jid_s - jid_ = jid.JID(jid_s) - assert jid_.user - assert jid_.host - except (jid.InvalidFormat, AssertionError): - feedback = _(u"You must provide a valid JID to invite, like in '/invite contact@example.net'") + contact_jid = jid.JID(contact_jid_s) + except (RuntimeError, jid.InvalidFormat, AttributeError): + feedback = _(u"You must provide a valid JID to invite, like in '/invite contact@{host}'").format(host=my_host) self.host.plugins[C.TEXT_CMDS].feedBack(feedback, mess_data, profile) return False - - self.invite(jid_, mess_data["to"], {}, profile) + if not contact_jid.user: + contact_jid.user, contact_jid.host = contact_jid.host, my_host + self.invite(contact_jid, mess_data["to"], {}, profile) return False