Mercurial > libervia-web
diff src/browser/sat_browser/jid.py @ 467:97c72fe4a5f2
browser_side: import fixes:
- moved browser modules in a sat_browser packages, to avoid import conflicts with std lib (e.g. logging), and let pyjsbuild work normaly
- refactored bad import practices: classes are most of time not imported directly, module is imported instead.
author | Goffi <goffi@goffi.org> |
---|---|
date | Mon, 09 Jun 2014 22:15:26 +0200 |
parents | src/browser/jid.py@981ed669d3b3 |
children | da690ef8019e |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/browser/sat_browser/jid.py Mon Jun 09 22:15:26 2014 +0200 @@ -0,0 +1,54 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- + +# Libervia: a Salut à Toi frontend +# Copyright (C) 2011, 2012, 2013, 2014 Jérôme Poisson <goffi@goffi.org> + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. + +# 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/>. + + +class JID(object): + """This class help manage JID (Node@Domaine/Resource)""" + + def __init__(self, jid): + self.__raw = str(jid) + self.__parse() + + def __parse(self): + """find node domaine and resource""" + node_end = self.__raw.find('@') + if node_end < 0: + node_end = 0 + domain_end = self.__raw.find('/') + if domain_end < 1: + domain_end = len(self.__raw) + self.node = self.__raw[:node_end] + self.domain = self.__raw[(node_end + 1) if node_end else 0:domain_end] + self.resource = self.__raw[domain_end + 1:] + if not node_end: + self.bare = self.__raw + else: + self.bare = self.node + '@' + self.domain + + def __str__(self): + return self.__raw.__str__() + + def is_valid(self): + """return True if the jid is xmpp compliant""" + #FIXME: always return True for the moment + return True + + def __eq__(self, other): + """Redefine equality operator to implement the naturally expected test""" + return self.node == other.node and self.domain == other.domain and self.resource == other.resource