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)'
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')