Modified getEntryXmlDoc to always create empty content element; Modified net.py to allow extra headers to be passed in to rest methods
git-svn-id: https://svn.apache.org/repos/asf/chemistry/cmislib/trunk@1388254 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/cmislib.egg-info/SOURCES.txt b/src/cmislib.egg-info/SOURCES.txt
index bbb0c10..58164da 100644
--- a/src/cmislib.egg-info/SOURCES.txt
+++ b/src/cmislib.egg-info/SOURCES.txt
@@ -44,8 +44,8 @@
src/doc/build/genindex.html
src/doc/build/index.html
src/doc/build/install.html
-src/doc/build/modindex.html
src/doc/build/objects.inv
+src/doc/build/py-modindex.html
src/doc/build/sample-data.html
src/doc/build/search.html
src/doc/build/searchindex.js
@@ -59,15 +59,26 @@
src/doc/build/_sources/install.txt
src/doc/build/_sources/sample-data.txt
src/doc/build/_sources/tests.txt
+src/doc/build/_static/ajax-loader.gif
src/doc/build/_static/basic.css
+src/doc/build/_static/comment-bright.png
+src/doc/build/_static/comment-close.png
+src/doc/build/_static/comment.png
src/doc/build/_static/default.css
src/doc/build/_static/doctools.js
+src/doc/build/_static/down-pressed.png
+src/doc/build/_static/down.png
src/doc/build/_static/file.png
src/doc/build/_static/jquery.js
src/doc/build/_static/minus.png
src/doc/build/_static/plus.png
src/doc/build/_static/pygments.css
src/doc/build/_static/searchtools.js
+src/doc/build/_static/sidebar.js
+src/doc/build/_static/underscore.js
+src/doc/build/_static/up-pressed.png
+src/doc/build/_static/up.png
+src/doc/build/_static/websupport.js
src/doc/src/Makefile
src/doc/src/about.rst
src/doc/src/code.rst
diff --git a/src/cmislib/model.py b/src/cmislib/model.py
index 5e419dc..2947bc6 100644
--- a/src/cmislib/model.py
+++ b/src/cmislib/model.py
@@ -209,7 +209,10 @@
self._processCommonErrors(result)
return result
else:
- return minidom.parse(result)
+ try:
+ return minidom.parse(result)
+ except ExpatError:
+ raise CmisException('Could not parse server response', url)
def delete(self, url, **kwargs):
@@ -257,9 +260,15 @@
password=self.password,
**kwargs)
if type(result) != HTTPError:
- return minidom.parse(result)
+ try:
+ return minidom.parse(result)
+ except ExpatError:
+ raise CmisException('Could not parse server response', url)
elif result.code == 201:
- return minidom.parse(result)
+ try:
+ return minidom.parse(result)
+ except ExpatError:
+ raise CmisException('Could not parse server response', url)
else:
self._processCommonErrors(result)
return result
@@ -293,6 +302,7 @@
try:
return minidom.parse(result)
except ExpatError:
+ # This may happen and is normal
return None
def _processCommonErrors(self, error):
@@ -4050,6 +4060,8 @@
entryElement.setAttribute('xmlns:cmisra', CMISRA_NS)
entryXmlDoc.appendChild(entryElement)
+ contentElement = entryXmlDoc.createElementNS(CMISRA_NS, 'cmisra:content')
+
# if there is a File, encode it and add it to the XML
if contentFile:
mimetype = contentType
@@ -4073,7 +4085,6 @@
# and encode everything.
fileData = contentFile.read().encode("base64")
- contentElement = entryXmlDoc.createElementNS(CMISRA_NS, 'cmisra:content')
mediaElement = entryXmlDoc.createElementNS(CMISRA_NS, 'cmisra:mediatype')
mediaElementText = entryXmlDoc.createTextNode(mimetype)
mediaElement.appendChild(mediaElementText)
@@ -4083,7 +4094,7 @@
contentElement.appendChild(mediaElement)
contentElement.appendChild(base64Element)
- entryElement.appendChild(contentElement)
+ entryElement.appendChild(contentElement)
objectElement = entryXmlDoc.createElementNS(CMISRA_NS, 'cmisra:object')
objectElement.setAttribute('xmlns:cmis', CMIS_NS)
diff --git a/src/cmislib/net.py b/src/cmislib/net.py
index 9d9e603..93c9420 100644
--- a/src/cmislib/net.py
+++ b/src/cmislib/net.py
@@ -112,7 +112,12 @@
""" Makes a get request to the URL specified."""
+ headers = None
if kwargs:
+ if 'headers' in kwargs:
+ headers = kwargs['headers']
+ del(kwargs['headers'])
+ self.logger.debug('Headers passed in:%s' % headers)
if url.find('?') >= 0:
url = url + '&' + urlencode(kwargs)
else:
@@ -124,7 +129,11 @@
# add a user-agent
request.add_header('User-Agent', self.user_agent)
-
+ if headers:
+ for k,v in headers.items():
+ self.logger.debug('Adding header:%s:%s' % (k,v))
+ request.add_header(k, v)
+
# create a password manager
passwordManager = HTTPPasswordMgrWithDefaultRealm()
passwordManager.add_password(None, url, username, password)
@@ -139,7 +148,12 @@
""" Makes a delete request to the URL specified. """
+ headers = None
if kwargs:
+ if 'headers' in kwargs:
+ headers = kwargs['headers']
+ del(kwargs['headers'])
+ self.logger.debug('Headers passed in:%s' % headers)
if url.find('?') >= 0:
url = url + '&' + urlencode(kwargs)
else:
@@ -151,6 +165,10 @@
# add a user-agent
request.add_header('User-Agent', self.user_agent)
+ if headers:
+ for k,v in headers.items():
+ self.logger.debug('Adding header:%s:%s' % (k,v))
+ request.add_header(k, v)
# create a password manager
passwordManager = HTTPPasswordMgrWithDefaultRealm()
@@ -182,7 +200,12 @@
specified content type.
"""
+ headers = None
if kwargs:
+ if 'headers' in kwargs:
+ headers = kwargs['headers']
+ del(kwargs['headers'])
+ self.logger.debug('Headers passed in:%s' % headers)
if url.find('?') >= 0:
url = url + '&' + urlencode(kwargs)
else:
@@ -197,6 +220,11 @@
# add a user-agent
request.add_header('User-Agent', self.user_agent)
+ if headers:
+ for k,v in headers.items():
+ self.logger.debug('Adding header:%s:%s' % (k,v))
+ request.add_header(k, v)
+
# create a password manager
passwordManager = HTTPPasswordMgrWithDefaultRealm()
passwordManager.add_password(None, url, username, password)
@@ -221,7 +249,12 @@
specified content type.
"""
+ headers = None
if kwargs:
+ if 'headers' in kwargs:
+ headers = kwargs['headers']
+ del(kwargs['headers'])
+ self.logger.debug('Headers passed in:%s' % headers)
if url.find('?') >= 0:
url = url + '&' + urlencode(kwargs)
else:
@@ -236,6 +269,10 @@
# add a user-agent
request.add_header('User-Agent', self.user_agent)
+ if headers:
+ for k,v in headers.items():
+ self.logger.debug('Adding header:%s:%s' % (k,v))
+ request.add_header(k, v)
# create a password manager
passwordManager = HTTPPasswordMgrWithDefaultRealm()