"Fossies" - the Fresh Open Source Software Archive  

Source code changes of the file "ec2api/s3/s3server.py" between
ec2-api-14.0.1.tar.gz and ec2-api-15.0.0.tar.gz

About: OpenStack EC2 API provides a standalone EC2 (and VPC) API service.
The "Zed" series (latest release).

s3server.py  (ec2-api-14.0.1):s3server.py  (ec2-api-15.0.0)
skipping to change at line 43 skipping to change at line 43
""" """
import bisect import bisect
import datetime import datetime
import os.path import os.path
from oslo_config import cfg from oslo_config import cfg
from oslo_log import log as logging from oslo_log import log as logging
from oslo_utils import fileutils from oslo_utils import fileutils
import routes import routes
import six from urllib import parse
from six.moves.urllib import parse
import webob import webob
from ec2api import paths from ec2api import paths
from ec2api import utils from ec2api import utils
from ec2api import wsgi from ec2api import wsgi
s3_opts = [ s3_opts = [
cfg.StrOpt('buckets_path', cfg.StrOpt('buckets_path',
default=paths.state_path_def('buckets'), default=paths.state_path_def('buckets'),
help='Path to S3 buckets'), help='Path to S3 buckets'),
skipping to change at line 175 skipping to change at line 174
self.response.status = status_code self.response.status = status_code
def set_404(self): def set_404(self):
self.render_xml({"Error": { self.render_xml({"Error": {
"Code": "NoSuchKey", "Code": "NoSuchKey",
"Message": "The resource you requested does not exist" "Message": "The resource you requested does not exist"
}}) }})
self.set_status(404) self.set_status(404)
def finish(self, body=''): def finish(self, body=''):
if isinstance(body, six.binary_type): if isinstance(body, bytes):
self.response.body = body self.response.body = body
else: else:
self.response.body = body.encode("utf-8") self.response.body = body.encode("utf-8")
def invalid(self, **kwargs): def invalid(self, **kwargs):
pass pass
def render_xml(self, value): def render_xml(self, value):
assert isinstance(value, dict) and len(value) == 1 assert isinstance(value, dict) and len(value) == 1
self.set_header("Content-Type", "application/xml; charset=UTF-8") self.set_header("Content-Type", "application/xml; charset=UTF-8")
name = next(six.iterkeys(value)) name = next(iter(value.keys()))
parts = [] parts = []
parts.append('<' + name + parts.append('<' + name +
' xmlns="http://s3.amazonaws.com/doc/2006-03-01/">') ' xmlns="http://s3.amazonaws.com/doc/2006-03-01/">')
self._render_parts(next(six.itervalues(value)), parts) self._render_parts(next(iter(value.values())), parts)
parts.append('</' + name + '>') parts.append('</' + name + '>')
self.finish('<?xml version="1.0" encoding="UTF-8"?>\n' + self.finish('<?xml version="1.0" encoding="UTF-8"?>\n' +
''.join(parts)) ''.join(parts))
def _render_parts(self, value, parts=None): def _render_parts(self, value, parts=None):
if not parts: if not parts:
parts = [] parts = []
if isinstance(value, six.string_types): if isinstance(value, str):
parts.append(utils.xhtml_escape(value)) parts.append(utils.xhtml_escape(value))
elif isinstance(value, six.integer_types): elif isinstance(value, int):
parts.append(str(value)) parts.append(str(value))
elif isinstance(value, datetime.datetime): elif isinstance(value, datetime.datetime):
parts.append(value.strftime("%Y-%m-%dT%H:%M:%S.000Z")) parts.append(value.strftime("%Y-%m-%dT%H:%M:%S.000Z"))
elif isinstance(value, dict): elif isinstance(value, dict):
for name, subvalue in value.items(): for name, subvalue in value.items():
if not isinstance(subvalue, list): if not isinstance(subvalue, list):
subvalue = [subvalue] subvalue = [subvalue]
for subsubvalue in subvalue: for subsubvalue in subvalue:
parts.append('<' + name + '>') parts.append('<' + name + '>')
self._render_parts(subsubvalue, parts) self._render_parts(subsubvalue, parts)
 End of changes. 6 change blocks. 
7 lines changed or deleted 6 lines changed or added

Home  |  About  |  Features  |  All  |  Newest  |  Dox  |  Diffs  |  RSS Feeds  |  Screenshots  |  Comments  |  Imprint  |  Privacy  |  HTTP(S)