Store None instead of '' for unset parts of a JID.

This commit is contained in:
Emmanuel Gil Peyrot 2015-06-22 01:12:56 +01:00
parent 4afbb0322b
commit 75ba283572

View File

@ -79,7 +79,7 @@ def _validate_node(node):
:returns: The local portion of a JID, as validated by nodeprep. :returns: The local portion of a JID, as validated by nodeprep.
""" """
if node is None: if node is None:
return '' return None
try: try:
node = nodeprep(node) node = nodeprep(node)
@ -160,7 +160,7 @@ def _validate_resource(resource):
:returns: The local portion of a JID, as validated by resourceprep. :returns: The local portion of a JID, as validated by resourceprep.
""" """
if resource is None: if resource is None:
return '' return None
try: try:
resource = resourceprep(resource) resource = resourceprep(resource)
@ -209,12 +209,12 @@ def _format_jid(local=None, domain=None, resource=None):
:return: A full or bare JID string. :return: A full or bare JID string.
""" """
result = [] result = []
if local: if local is not None:
result.append(local) result.append(local)
result.append('@') result.append('@')
if domain: if domain is not None:
result.append(domain) result.append(domain)
if resource: if resource is not None:
result.append('/') result.append('/')
result.append(resource) result.append(resource)
return ''.join(result) return ''.join(result)
@ -250,11 +250,11 @@ class UnescapedJID:
full, or bare. full, or bare.
""" """
if name == 'resource': if name == 'resource':
return self._resource return self._resource or ''
if name in ('user', 'username', 'local', 'node'): if name in ('user', 'username', 'local', 'node'):
return self._node return self._node or ''
if name in ('server', 'domain', 'host'): if name in ('server', 'domain', 'host'):
return self._domain return self._domain or ''
if name in ('full', 'jid'): if name in ('full', 'jid'):
return _format_jid(self._node, self._domain, self._resource) return _format_jid(self._node, self._domain, self._resource)
if name == 'bare': if name == 'bare':
@ -304,9 +304,9 @@ class JID:
def __init__(self, jid=None): def __init__(self, jid=None):
if not jid: if not jid:
self._node = '' self._node = None
self._domain = '' self._domain = None
self._resource = '' self._resource = None
elif not isinstance(jid, JID): elif not isinstance(jid, JID):
self._node, self._domain, self._resource = _parse_jid(jid) self._node, self._domain, self._resource = _parse_jid(jid)
else: else:
@ -331,40 +331,40 @@ class JID:
@property @property
def node(self): def node(self):
return self._node return self._node or ''
@property @property
def user(self): def user(self):
return self._node return self._node or ''
@property @property
def local(self): def local(self):
return self._node return self._node or ''
@property @property
def username(self): def username(self):
return self._node return self._node or ''
@property @property
def domain(self): def domain(self):
return self._domain return self._domain or ''
@property @property
def server(self): def server(self):
return self._domain return self._domain or ''
@property @property
def host(self): def host(self):
return self._domain return self._domain or ''
@property
def resource(self):
return self._resource or ''
@property @property
def bare(self): def bare(self):
return _format_jid(self._node, self._domain) return _format_jid(self._node, self._domain)
@property
def resource(self):
return self._resource
@property @property
def full(self): def full(self):
return _format_jid(self._node, self._domain, self._resource) return _format_jid(self._node, self._domain, self._resource)