Exemplo n.º 1
0
 def test_json(self):
     input_dict = dict(servers=dict(a=(2, 3)))
     expected_json = '{"servers":{"a":[2,3]}}'
     serializer = wsgi.JSONDictSerializer()
     result = serializer.serialize(input_dict)
     result = result.replace('\n', '').replace(' ', '')
     self.assertEqual(result, expected_json)
Exemplo n.º 2
0
    def __call__(self, req):
        """Generate a WSGI response based on the exception passed to ctor."""
        # Replace the body with fault details.
        code = self.wrapped_exc.status_int
        fault_name = self._fault_names.get(code, "cloudServersFault")
        fault_data = {
            fault_name: {
                'code': code,
                'message': self.wrapped_exc.explanation
            }
        }
        if code == 413:
            retry = self.wrapped_exc.headers['Retry-After']
            fault_data[fault_name]['retryAfter'] = retry

        # 'code' is an attribute on the fault tag itself
        metadata = {'attributes': {fault_name: 'code'}}

        content_type = req.best_match_content_type()

        xml_serializer = {
            '1.0': wsgi.XMLDictSerializer(metadata, wsgi.XMLNS_V10),
            '1.1': wsgi.XMLDictSerializer(metadata, wsgi.XMLNS_V11),
        }[common.get_version_from_href(req.url)]

        serializer = {
            'application/xml': xml_serializer,
            'application/json': wsgi.JSONDictSerializer(),
        }[content_type]

        self.wrapped_exc.body = serializer.serialize(fault_data)
        self.wrapped_exc.content_type = content_type

        return self.wrapped_exc
Exemplo n.º 3
0
    def __call__(self, request):
        """
        Return the wrapped exception with a serialized body conforming to our
        error format.
        """
        content_type = request.best_match_content_type()
        metadata = {"attributes": {"overLimitFault": "code"}}

        xml_serializer = {
            '1.0': wsgi.XMLDictSerializer(metadata, wsgi.XMLNS_V10),
            '1.1': wsgi.XMLDictSerializer(metadata, wsgi.XMLNS_V11),
        }[common.get_version_from_href(request.url)]

        serializer = {
            'application/xml': xml_serializer,
            'application/json': wsgi.JSONDictSerializer(),
        }[content_type]

        content = serializer.serialize(self.content)
        self.wrapped_exc.body = content

        return self.wrapped_exc