Ejemplo n.º 1
0
    def _dict_to_etree(self, parent, d):
        for key, value in d.items():
            tag = re.sub('\W', '', snake_to_camel(key))
            elem = SubElement(parent, tag)

            if isinstance(value, (dict, DictMixin)):
                self._dict_to_etree(elem, value)
            else:
                try:
                    elem.text = str(value)
                except ValueError:
                    # We set an invalid string for XML.
                    elem.text = '(invalid string)'
Ejemplo n.º 2
0
    def GET(self, req):
        """
        Handle GET Bucket website request
        """
        resp = req.get_response(self.app)
        if resp.bucket_acl == 'private':
            raise AccessDenied()
        if 'x-oss-web-index' not in resp.headers:
            raise NoSuchWebsiteConfiguration()
        web_index = resp.headers['x-oss-web-index']
        web_error = resp.headers['x-oss-web-error']
        elem = Element('WebsiteConfiguration')
        index = SubElement(elem, 'IndexDocument')
        SubElement(index, 'Suffix').text = web_index
        if web_error is not None:
            error_doc = SubElement(elem, 'ErrorDocument')
            key = SubElement(error_doc, 'Key')
            if key is None and key == '':
                raise NoSuchKey()
            key.text = web_error
        body = tostring(elem)

        return HTTPOk(body=body, content_type='application/xml')