diff options
author | Cerberus <matt.dietz@rackspace.com> | 2010-09-21 16:45:44 -0500 |
---|---|---|
committer | Cerberus <matt.dietz@rackspace.com> | 2010-09-21 16:45:44 -0500 |
commit | 2b2d9b3190ca19fa77121faf1351c9af7ad78866 (patch) | |
tree | c2c189e02441d3a71e5a9972f6785add9ac310ea /nova/wsgi.py | |
parent | e3c7f34bbcc09cbb169d9316c50da6d908ac623c (diff) | |
parent | ce0a9b7b36ba816c347f10a1804aedf337ad35da (diff) | |
download | nova-2b2d9b3190ca19fa77121faf1351c9af7ad78866.tar.gz nova-2b2d9b3190ca19fa77121faf1351c9af7ad78866.tar.xz nova-2b2d9b3190ca19fa77121faf1351c9af7ad78866.zip |
Merge from trunk
Diffstat (limited to 'nova/wsgi.py')
-rw-r--r-- | nova/wsgi.py | 31 |
1 files changed, 17 insertions, 14 deletions
diff --git a/nova/wsgi.py b/nova/wsgi.py index bec0a7b1c..8a4e2a9f4 100644 --- a/nova/wsgi.py +++ b/nova/wsgi.py @@ -241,6 +241,9 @@ class Serializer(object): """ self.environ = environ self.metadata = metadata or {} + self._methods = { + 'application/json': self._to_json, + 'application/xml': self._to_xml} def to_content_type(self, data): """ @@ -250,20 +253,20 @@ class Serializer(object): """ mimetype = 'application/xml' # TODO(gundlach): determine mimetype from request - - if mimetype == 'application/json': - import json - return json.dumps(data) - elif mimetype == 'application/xml': - metadata = self.metadata.get('application/xml', {}) - # We expect data to contain a single key which is the XML root. - root_key = data.keys()[0] - from xml.dom import minidom - doc = minidom.Document() - node = self._to_xml_node(doc, metadata, root_key, data[root_key]) - return node.toprettyxml(indent=' ') - else: - return repr(data) + return self._methods.get(mimetype, repr)(data) + + def _to_json(self, data): + import json + return json.dumps(data) + + def _to_xml(self, data): + metadata = self.metadata.get('application/xml', {}) + # We expect data to contain a single key which is the XML root. + root_key = data.keys()[0] + from xml.dom import minidom + doc = minidom.Document() + node = self._to_xml_node(doc, metadata, root_key, data[root_key]) + return node.toprettyxml(indent=' ') def _to_xml_node(self, doc, metadata, nodename, data): """Recursive method to convert data members to XML nodes.""" |