# HG changeset patch # User souliane # Date 1409081101 -7200 # Node ID da690ef8019ed81dbaeb1f5a33145bd7619e073b # Parent 530c88c1deee11a9b51f79bbe260f37484e4c92a browser_side: force JID's node and domain to lower-case diff -r 530c88c1deee -r da690ef8019e src/browser/sat_browser/jid.py --- a/src/browser/sat_browser/jid.py Mon Aug 25 17:35:41 2014 +0200 +++ b/src/browser/sat_browser/jid.py Tue Aug 26 21:25:01 2014 +0200 @@ -17,16 +17,28 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . +# FIXME: Libervia should use sat_frontends.tools.jid but pyjamas doesn't +# know the unicode type and also experiences issues with __new__. + class JID(object): """This class help manage JID (Node@Domaine/Resource)""" def __init__(self, jid): - self.__raw = str(jid) + self.__raw = str(self.__normalize(jid)) self.__parse() + @classmethod + def __normalize(cls, jid): + """Naive normalization before instantiating and parsing the JID""" + if not jid: + return jid + tokens = jid.split('/') + tokens[0] = tokens[0].lower() # force node and domain to lower-case + return '/'.join(tokens) + def __parse(self): - """find node domaine and resource""" + """Find node domain and resource""" node_end = self.__raw.find('@') if node_end < 0: node_end = 0 @@ -45,9 +57,11 @@ return self.__raw.__str__() def is_valid(self): - """return True if the jid is xmpp compliant""" + """ + @return: True if the JID is XMPP compliant + """ #FIXME: always return True for the moment - return True + return self.domain != '' def __eq__(self, other): """Redefine equality operator to implement the naturally expected test"""