Mercurial > libervia-web
diff src/browser/sat_browser/jid.py @ 515:da690ef8019e
browser_side: force JID's node and domain to lower-case
author | souliane <souliane@mailoo.org> |
---|---|
date | Tue, 26 Aug 2014 21:25:01 +0200 |
parents | 97c72fe4a5f2 |
children | 138336986bd0 |
line wrap: on
line diff
--- 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 <http://www.gnu.org/licenses/>. +# 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"""