Index: third_party/twisted_8_1/twisted/words/protocols/jabber/jid.py |
diff --git a/third_party/twisted_8_1/twisted/words/protocols/jabber/jid.py b/third_party/twisted_8_1/twisted/words/protocols/jabber/jid.py |
deleted file mode 100644 |
index 2604685c6f4134693c9b659cfbd87e8bd66bd660..0000000000000000000000000000000000000000 |
--- a/third_party/twisted_8_1/twisted/words/protocols/jabber/jid.py |
+++ /dev/null |
@@ -1,249 +0,0 @@ |
-# -*- test-case-name: twisted.words.test.test_jabberjid -*- |
-# |
-# Copyright (c) 2001-2008 Twisted Matrix Laboratories. |
-# See LICENSE for details. |
- |
-""" |
-Jabber Identifier support. |
- |
-This module provides an object to represent Jabber Identifiers (JIDs) and |
-parse string representations into them with proper checking for illegal |
-characters, case folding and canonicalisation through L{stringprep<twisted.words.protocols.jabber.xmpp_stringprep>}. |
-""" |
- |
-from twisted.words.protocols.jabber.xmpp_stringprep import nodeprep, resourceprep, nameprep |
- |
-class InvalidFormat(Exception): |
- """ |
- The given string could not be parsed into a valid Jabber Identifier (JID). |
- """ |
- |
-def parse(jidstring): |
- """ |
- Parse given JID string into its respective parts and apply stringprep. |
- |
- @param jidstring: string representation of a JID. |
- @type jidstring: C{unicode} |
- @return: tuple of (user, host, resource), each of type C{unicode} as |
- the parsed and stringprep'd parts of the given JID. If the |
- given string did not have a user or resource part, the respective |
- field in the tuple will hold C{None}. |
- @rtype: C{tuple} |
- """ |
- user = None |
- host = None |
- resource = None |
- |
- # Search for delimiters |
- user_sep = jidstring.find("@") |
- res_sep = jidstring.find("/") |
- |
- if user_sep == -1: |
- if res_sep == -1: |
- # host |
- host = jidstring |
- else: |
- # host/resource |
- host = jidstring[0:res_sep] |
- resource = jidstring[res_sep + 1:] or None |
- else: |
- if res_sep == -1: |
- # user@host |
- user = jidstring[0:user_sep] or None |
- host = jidstring[user_sep + 1:] |
- else: |
- if user_sep < res_sep: |
- # user@host/resource |
- user = jidstring[0:user_sep] or None |
- host = jidstring[user_sep + 1:user_sep + (res_sep - user_sep)] |
- resource = jidstring[res_sep + 1:] or None |
- else: |
- # host/resource (with an @ in resource) |
- host = jidstring[0:res_sep] |
- resource = jidstring[res_sep + 1:] or None |
- |
- return prep(user, host, resource) |
- |
-def prep(user, host, resource): |
- """ |
- Perform stringprep on all JID fragments. |
- |
- @param user: The user part of the JID. |
- @type user: C{unicode} |
- @param host: The host part of the JID. |
- @type host: C{unicode} |
- @param resource: The resource part of the JID. |
- @type resource: C{unicode} |
- @return: The given parts with stringprep applied. |
- @rtype: C{tuple} |
- """ |
- |
- if user: |
- try: |
- user = nodeprep.prepare(unicode(user)) |
- except UnicodeError: |
- raise InvalidFormat, "Invalid character in username" |
- else: |
- user = None |
- |
- if not host: |
- raise InvalidFormat, "Server address required." |
- else: |
- try: |
- host = nameprep.prepare(unicode(host)) |
- except UnicodeError: |
- raise InvalidFormat, "Invalid character in hostname" |
- |
- if resource: |
- try: |
- resource = resourceprep.prepare(unicode(resource)) |
- except UnicodeError: |
- raise InvalidFormat, "Invalid character in resource" |
- else: |
- resource = None |
- |
- return (user, host, resource) |
- |
-__internJIDs = {} |
- |
-def internJID(jidstring): |
- """ |
- Return interned JID. |
- |
- @rtype: L{JID} |
- """ |
- |
- if jidstring in __internJIDs: |
- return __internJIDs[jidstring] |
- else: |
- j = JID(jidstring) |
- __internJIDs[jidstring] = j |
- return j |
- |
-class JID(object): |
- """ |
- Represents a stringprep'd Jabber ID. |
- |
- JID objects are hashable so they can be used in sets and as keys in |
- dictionaries. |
- """ |
- |
- def __init__(self, str=None, tuple=None): |
- if not (str or tuple): |
- raise RuntimeError("You must provide a value for either 'str' or " |
- "'tuple' arguments.") |
- |
- if str: |
- user, host, res = parse(str) |
- else: |
- user, host, res = prep(*tuple) |
- |
- self.user = user |
- self.host = host |
- self.resource = res |
- |
- def userhost(self): |
- """ |
- Extract the bare JID as a unicode string. |
- |
- A bare JID does not have a resource part, so this returns either |
- C{user@host} or just C{host}. |
- |
- @rtype: C{unicode} |
- """ |
- if self.user: |
- return u"%s@%s" % (self.user, self.host) |
- else: |
- return self.host |
- |
- def userhostJID(self): |
- """ |
- Extract the bare JID. |
- |
- A bare JID does not have a resource part, so this returns a |
- L{JID} object representing either C{user@host} or just C{host}. |
- |
- If the object this method is called upon doesn't have a resource |
- set, it will return itself. Otherwise, the bare JID object will |
- be created, interned using L{internJID}. |
- |
- @rtype: L{JID} |
- """ |
- if self.resource: |
- return internJID(self.userhost()) |
- else: |
- return self |
- |
- def full(self): |
- """ |
- Return the string representation of this JID. |
- |
- @rtype: C{unicode} |
- """ |
- if self.user: |
- if self.resource: |
- return u"%s@%s/%s" % (self.user, self.host, self.resource) |
- else: |
- return u"%s@%s" % (self.user, self.host) |
- else: |
- if self.resource: |
- return u"%s/%s" % (self.host, self.resource) |
- else: |
- return self.host |
- |
- def __eq__(self, other): |
- """ |
- Equality comparison. |
- |
- L{JID}s compare equal if their user, host and resource parts all |
- compare equal. When comparing against instances of other types, it |
- uses the default comparison. |
- """ |
- if isinstance(other, JID): |
- return (self.user == other.user and |
- self.host == other.host and |
- self.resource == other.resource) |
- else: |
- return NotImplemented |
- |
- def __ne__(self, other): |
- """ |
- Inequality comparison. |
- |
- This negates L{__eq__} for comparison with JIDs and uses the default |
- comparison for other types. |
- """ |
- result = self.__eq__(other) |
- if result is NotImplemented: |
- return result |
- else: |
- return not result |
- |
- def __hash__(self): |
- """ |
- Calculate hash. |
- |
- L{JID}s with identical constituent user, host and resource parts have |
- equal hash values. In combination with the comparison defined on JIDs, |
- this allows for using L{JID}s in sets and as dictionary keys. |
- """ |
- return hash((self.user, self.host, self.resource)) |
- |
- def __unicode__(self): |
- """ |
- Get unicode representation. |
- |
- Return the string representation of this JID as a unicode string. |
- @see: L{full} |
- """ |
- |
- return self.full() |
- |
- def __repr__(self): |
- """ |
- Get object representation. |
- |
- Returns a string that would create a new JID object that compares equal |
- to this one. |
- """ |
- return 'JID(%r)' % self.full() |