annotate src/tools/jid.py @ 297:c5554e2939dd

plugin XEP 0277: author for in request + author, updated management for out request - a workaround is now used to parse "nick" tag (Jappix behaviour) - author and updated can now be used in data when sendind microblog. Is no author is given, user jid is used, if no updated is given, current timestamp is used
author Goffi <goffi@goffi.org>
date Fri, 18 Feb 2011 22:32:02 +0100
parents b1794cbb88e5
children cf005701624b
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
goffi@necton2
parents:
diff changeset
1 #!/usr/bin/python
goffi@necton2
parents:
diff changeset
2 # -*- coding: utf-8 -*-
goffi@necton2
parents:
diff changeset
3
goffi@necton2
parents:
diff changeset
4 """
goffi@necton2
parents:
diff changeset
5 SAT: a jabber client
228
b1794cbb88e5 2011 copyright upgrade
Goffi <goffi@goffi.org>
parents: 224
diff changeset
6 Copyright (C) 2009, 2010, 2011 Jérôme Poisson (goffi@goffi.org)
0
goffi@necton2
parents:
diff changeset
7
goffi@necton2
parents:
diff changeset
8 This program is free software: you can redistribute it and/or modify
goffi@necton2
parents:
diff changeset
9 it under the terms of the GNU General Public License as published by
goffi@necton2
parents:
diff changeset
10 the Free Software Foundation, either version 3 of the License, or
goffi@necton2
parents:
diff changeset
11 (at your option) any later version.
goffi@necton2
parents:
diff changeset
12
goffi@necton2
parents:
diff changeset
13 This program is distributed in the hope that it will be useful,
goffi@necton2
parents:
diff changeset
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
goffi@necton2
parents:
diff changeset
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
goffi@necton2
parents:
diff changeset
16 GNU General Public License for more details.
goffi@necton2
parents:
diff changeset
17
goffi@necton2
parents:
diff changeset
18 You should have received a copy of the GNU General Public License
goffi@necton2
parents:
diff changeset
19 along with this program. If not, see <http://www.gnu.org/licenses/>.
goffi@necton2
parents:
diff changeset
20 """
goffi@necton2
parents:
diff changeset
21
goffi@necton2
parents:
diff changeset
22
goffi@necton2
parents:
diff changeset
23
128
2240f34f6452 Primitivus: misc fixes + menubar first draft
Goffi <goffi@goffi.org>
parents: 57
diff changeset
24 class JID(unicode):
0
goffi@necton2
parents:
diff changeset
25 """This class help manage JID (Node@Domaine/Resource)"""
goffi@necton2
parents:
diff changeset
26
goffi@necton2
parents:
diff changeset
27 def __new__(cls, jid):
128
2240f34f6452 Primitivus: misc fixes + menubar first draft
Goffi <goffi@goffi.org>
parents: 57
diff changeset
28 self = unicode.__new__(cls, jid)
0
goffi@necton2
parents:
diff changeset
29 self.__parse()
goffi@necton2
parents:
diff changeset
30 return self
goffi@necton2
parents:
diff changeset
31
goffi@necton2
parents:
diff changeset
32 def __parse(self):
goffi@necton2
parents:
diff changeset
33 """find node domaine and resource"""
goffi@necton2
parents:
diff changeset
34 node_end=self.find('@')
goffi@necton2
parents:
diff changeset
35 if node_end<0:
46
18f6c9e60507 jid parsing fix: node is now empty for transports
Goffi <goffi@goffi.org>
parents: 0
diff changeset
36 node_end=0
0
goffi@necton2
parents:
diff changeset
37 domain_end=self.find('/')
goffi@necton2
parents:
diff changeset
38 if domain_end<1:
goffi@necton2
parents:
diff changeset
39 domain_end=len(self)
goffi@necton2
parents:
diff changeset
40 self.node=self[:node_end]
46
18f6c9e60507 jid parsing fix: node is now empty for transports
Goffi <goffi@goffi.org>
parents: 0
diff changeset
41 self.domain=self[(node_end+1) if node_end else 0:domain_end]
0
goffi@necton2
parents:
diff changeset
42 self.resource=self[domain_end+1:]
46
18f6c9e60507 jid parsing fix: node is now empty for transports
Goffi <goffi@goffi.org>
parents: 0
diff changeset
43 if not node_end:
0
goffi@necton2
parents:
diff changeset
44 self.short=self
goffi@necton2
parents:
diff changeset
45 else:
goffi@necton2
parents:
diff changeset
46 self.short=self.node+'@'+self.domain
goffi@necton2
parents:
diff changeset
47
goffi@necton2
parents:
diff changeset
48 def is_valid(self):
goffi@necton2
parents:
diff changeset
49 """return True if the jid is xmpp compliant"""
goffi@necton2
parents:
diff changeset
50 #FIXME: always return True for the moment
goffi@necton2
parents:
diff changeset
51 return True