From: chengkang <1412950785@qq.com> Date: Fri, 1 Jun 2018 14:03:00 +0000 (+0800) Subject: demo: update s3server to newest python X-Git-Tag: v5.1.0b1~6^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F2410%2Fhead;p=thirdparty%2Ftornado.git demo: update s3server to newest python --- diff --git a/demos/s3server/s3server.py b/demos/s3server/s3server.py index c01f06c46..4e8579446 100644 --- a/demos/s3server/s3server.py +++ b/demos/s3server/s3server.py @@ -42,14 +42,19 @@ from tornado import httpserver from tornado import ioloop from tornado import web from tornado.util import unicode_type +from tornado.options import options, define try: long except NameError: long = int +define("port", default=9888, help="TCP port to listen on") +define("root_directory", default="/tmp/s3", help="Root storage directory") +define("bucket_depth", default=0, help="Bucket file system depth limit") -def start(port, root_directory="/tmp/s3", bucket_depth=0): + +def start(port, root_directory, bucket_depth): """Starts the mock S3 server on the given port at the given path.""" application = S3Application(root_directory, bucket_depth) http_server = httpserver.HTTPServer(application) @@ -82,12 +87,12 @@ class BaseRequestHandler(web.RequestHandler): def render_xml(self, value): assert isinstance(value, dict) and len(value) == 1 self.set_header("Content-Type", "application/xml; charset=UTF-8") - name = value.keys()[0] + name = list(value.keys())[0] parts = [] - parts.append('<' + escape.utf8(name) + + parts.append('<' + name + ' xmlns="http://doc.s3.amazonaws.com/2006-03-01">') - self._render_parts(value.values()[0], parts) - parts.append('') + self._render_parts(value[name], parts) + parts.append('') self.finish('\n' + ''.join(parts)) @@ -99,13 +104,13 @@ class BaseRequestHandler(web.RequestHandler): elif isinstance(value, datetime.datetime): parts.append(value.strftime("%Y-%m-%dT%H:%M:%S.000Z")) elif isinstance(value, dict): - for name, subvalue in value.iteritems(): + for name, subvalue in value.items(): if not isinstance(subvalue, list): subvalue = [subvalue] for subsubvalue in subvalue: - parts.append('<' + escape.utf8(name) + '>') + parts.append('<' + name + '>') self._render_parts(subsubvalue, parts) - parts.append('') + parts.append('') else: raise Exception("Unknown S3 value type %r", value) @@ -259,3 +264,8 @@ class ObjectHandler(BaseRequestHandler): os.unlink(path) self.set_status(204) self.finish() + + +if __name__ == "__main__": + options.parse_command_line() + start(options.port, options.root_directory, options.bucket_depth)