Changeset 87
- Timestamp:
- 04/05/02 11:06:06 (6 years ago)
- Files:
-
- trunk/RBFoundation/RBFoundation/XMLObjectify.py (modified) (5 diffs)
- trunk/RBJabber/RBJabber/JID.py (modified) (2 diffs)
- trunk/RBJabber/RBJabber/JabberConnection.py (modified) (1 diff)
- trunk/RBJabber/RBJabber/MessageRouter.py (modified) (2 diffs)
- trunk/RBJabber/RBJabber/PresenceMap.py (modified) (3 diffs)
- trunk/RBJabber/RBJabber/iqQuery.py (modified) (3 diffs)
- trunk/RBJabber/RBJabber/iqRosterQuery.py (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/RBFoundation/RBFoundation/XMLObjectify.py
r85 r87 82 82 return 83 83 84 def __call__(self): 85 return [x[-1] for x in self._elements if not x[0][-1]] 84 def __call__(self, joinstr=None): 85 result = [x[-1] for x in self._elements if not x[0][-1]] 86 if joinstr is not None: 87 return joinstr.join(result) 88 return result 86 89 87 90 def __str__(self): 88 return ''.join(self())91 return self('') 89 92 90 93 def __int__(self): … … 115 118 self._elements.append(((self.__namespace__, ''), data)) 116 119 117 def _toPrettyXML(self, strSplit='', nsOuter=''):118 return ''.join(self._toXML(strSplit, nsOuter))119 120 120 def _toXML(self, strSplit='', nsOuter='', bHeaderOnly=0): 121 121 result = ['<%s ' % self.__node__] … … 127 127 elif self._elements: 128 128 result[-1] += '>' 129 result. extend(self._childrenToXML(strSplit, nsOuter))129 result.append(self._childrenToXML(strSplit, nsOuter)) 130 130 result.append('</%s>' % self.__node__) 131 131 else: 132 132 result[-1] += '/>' 133 return result134 135 def _childrenToPrettyXML(self, strSplit='', nsOuter=''):136 return ''.join(self._childrenToXML(strSplit, nsOuter))133 if strSplit is not None: 134 return strSplit.join(result) 135 else: return result 136 _toPrettyXML = _toXML 137 137 138 138 def _childrenToXML(self, strSplit='', nsOuter=''): … … 142 142 result.append(escape(each)) 143 143 else: 144 result.append(strSplit.join(each._toXML(strSplit, self.__namespace__))) 145 return result 144 result.append(each._toXML(strSplit, self.__namespace__)) 145 if strSplit is not None: 146 return strSplit.join(result) 147 else: return result 148 _childrenToPrettyXML = _childrenToXML 146 149 147 150 def _xmlInitStarted(self): … … 174 177 print repr(obj) 175 178 print ' ~ ' * 20 176 p rint obj._toPrettyXML()179 pprint (obj._toXML()) trunk/RBJabber/RBJabber/JID.py
r66 r87 47 47 reJabberJID = re.compile('''(%s)@(%s)(?:/(%s))?''' % (_restrID, _restrServer, _restrResource)) 48 48 49 __all__ = ['reJabberURL', 'reJabberJID'] 50 49 51 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 50 52 #~ Definitions 51 53 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 52 54 53 def JIDsplit(strJID, start=1, end=4):55 def split(strJID, start=1, end=4): 54 56 return reJabberJID.split(strJID)[start:end] 55 57 56 def JIDsplitnorm(strJID, start=1, end=4):58 def splitnorm(strJID, start=1, end=4): 57 59 result = reJabberJID.split(strJID)[start:end] 58 60 return [x.lower() for x in result[1-start:3-start]] + result[3-start:] 59 61 60 def JIDcmp(strJIDa, strJIDb, resource=1):62 def cmp(strJIDa, strJIDb, resource=1): 61 63 jida = JIDsplitnorm(strJIDa, end=3+resource) 62 64 jidb = JIDsplitnorm(strJIDb, end=3+resource) 63 65 return cmp(jida, jidb) 64 66 65 def JIDCompare(*args, **kw):67 def compare(*args, **kw): 66 68 return 0 == apply(JIDcmp, args, kw) 67 69 68 def JIDjoin(*args):70 def join(*args): 69 71 if isinstance(args[0], (tuple, list)): 70 72 args = tuple(args[0]) … … 75 77 else: return '' 76 78 77 def JIDnormalize(strJID):79 def normalize(strJID): 78 80 return JIDjoin(JIDsplitnorm(strJID)) 79 81 82 def nominal(strJID): 83 return JIDjoin(JIDsplitnorm(strJID, 1, 3)) 84 trunk/RBJabber/RBJabber/JabberConnection.py
r86 r87 38 38 from Foundation import SmartSelect 39 39 from Foundation.ContextApply import BindCallable 40 from JID import * 40 import JID 41 from JID import reJabberURL, reJabberJID 41 42 import socket 42 43 import select trunk/RBJabber/RBJabber/MessageRouter.py
r66 r87 38 38 from Foundation.SubjectObserver.Observer import Observer 39 39 from Foundation.SubjectObserver.BidableSubject import BidableSubjectMixin 40 from JID import * 40 import JID 41 41 42 42 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ … … 76 76 class MessageRouterByFrom(MessageRouterBase): 77 77 def _UpdateIndexXForm(self, FromJID): 78 return (JID normalize(FromJID),)78 return (JID.normalize(FromJID),) 79 79 80 80 def _UpdateMapXForm(self, node): trunk/RBJabber/RBJabber/PresenceMap.py
r66 r87 38 38 from Foundation.SubjectObserver.Observer import Observer 39 39 from Foundation.SubjectObserver.BidableSubject import BidableSubjectMixin 40 from JID import * 40 import JID 41 41 42 42 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ … … 53 53 def Update(self, subject, **UpdateDict): 54 54 presence = UpdateDict.get('presence', None) 55 FromJID = JID split(presence.from_)55 FromJID = JID.split(presence.from_) 56 56 if FromJID: 57 self.ByJID[JID join(FromJID)] = presence58 self.ByResource.setdefault(JID join(FromJID[:2]),{})[FromJID[-1]] = presence57 self.ByJID[JID.join(FromJID)] = presence 58 self.ByResource.setdefault(JID.join(FromJID[:2]),{})[FromJID[-1]] = presence 59 59 self.UpdateObservers(PresenceFrom=FromJID) 60 60 … … 79 79 80 80 def _UpdateIndexXForm(self, FromJID): 81 FromJID = JID splitnorm(FromJID)82 return (JID join(FromJID), JIDjoin(FromJID)[:-1])81 FromJID = JID.splitnorm(FromJID) 82 return (JID.join(FromJID), JID.join(FromJID)[:-1]) 83 83 84 84 def _UpdateMapXForm(self, node): trunk/RBJabber/RBJabber/iqQuery.py
r86 r87 40 40 from Foundation.SubjectObserver.Observer import Observer 41 41 from xml.sax.saxutils import escape, quoteattr 42 import JID 42 43 43 44 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ … … 46 47 47 48 class iqQueryBase: 48 def __init__(self, JabberClient): 49 def __init__(self, JabberClient, BidValue=1): 50 self.BidValue = BidValue 49 51 self.JC = weakref.ref(JabberClient) 50 52 self._observer = Observer(self.Update, self.Bid) … … 58 60 if bMatch: bMatch = iq.type in ['result', 'error'] 59 61 # and a it matches the jid we sent it to 60 if bMatch: bMatch = (not self.jidQuery or iq.from_ == self.jidQuery)62 if bMatch: bMatch = (not self.jidQuery or JID.compare(iq.from_, self.jidQuery)) 61 63 # and the query result namespace is the same 62 64 # if bMatch: bMatch = [q for q in iq._elements if q[0][0] == self.nsQuery] and 1 or 0 63 65 # then we have a match 64 return bMatch and 1or 066 return bMatch and self.BidValue or 0 65 67 return 0 66 68 trunk/RBJabber/RBJabber/iqRosterQuery.py
r86 r87 39 39 from Foundation.SubjectObserver.Observer import Observer 40 40 from iqQuery import iqQueryBase, Subject 41 from JID import *41 import JID 42 42 43 43 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ … … 65 65 RosterItems = getattr(iq.query[0], 'item', []) 66 66 for each in RosterItems: 67 self.ByJID[JID join(JIDsplit(each.jid)[:2])] = each67 self.ByJID[JID.join(JID.split(each.jid)[:2])] = each 68 68 if RosterItems: 69 69 self.UpdateObservers(Roster=self.ByJID) 70 70 71 71 def Get(self, JID, default=None): 72 return self.ByJID.get(JID join(JIDsplit(JID)[:2]), default)72 return self.ByJID.get(JID.join(JID.split(JID)[:2]), default) 73 73
