本文整理汇总了Python中swift.common.swob.Request.body方法的典型用法代码示例。如果您正苦于以下问题:Python Request.body方法的具体用法?Python Request.body怎么用?Python Request.body使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类swift.common.swob.Request
的用法示例。
在下文中一共展示了Request.body方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: __call__
# 需要导入模块: from swift.common.swob import Request [as 别名]
# 或者: from swift.common.swob.Request import body [as 别名]
def __call__(self, env, start_response):
request = Request(env)
try:
(version, account, container, objname) = split_path(request.path_info, 1, 4, True)
except ValueError:
response = request.get_response(self.app)
return response(env, start_response)
if not objname:
response = request.get_response(self.app)
if container:
if not request.params.has_key('compress'):
response.body = response.body.replace(self.compress_suffix, '')
return response(env, start_response)
original_path_info = request.path_info
request.path_info += self.compress_suffix
if request.method == 'GET':
if not request.params.has_key('compress'):
# we need to decompress
response = request.get_response(self.app)
if response.status_int == 404:
# it may not be compressed, if admin added the compress filter after
# some files have been uploaded
request.path_info = original_path_info
response = request.get_response(self.app)
return response(env, start_response)
uncompressed_data = create_uncompress(response.body)
response.body = uncompressed_data
return response(env, start_response)
if request.method == 'PUT':
if hasattr(request, 'body_file'):
data = ""
while True:
chunk = request.body_file.read()
if not chunk:
break
data += chunk
request.body = data
compress_data = create_compress(data)
else:
compress_data = create_compress(request.body)
if compress_data:
request.body = compress_data
response = request.get_response(self.app)
return response(env, start_response)
示例2: __call__
# 需要导入模块: from swift.common.swob import Request [as 别名]
# 或者: from swift.common.swob.Request import body [as 别名]
def __call__(self, env, start_response):
req = Request(env)
try:
key = req.headers['X-AES-Key']
aes = AESCipher(key)
if req.method == 'PUT':
if req.content_length != None and req.body != None:
req.body = aes.encrypt(req.body)
req.content_length = len(req.body)
except Exception:
self.logger.info('No key provided')
return self.app(env, start_response)
示例3: completeMultipartUpload
# 需要导入模块: from swift.common.swob import Request [as 别名]
# 或者: from swift.common.swob.Request import body [as 别名]
def completeMultipartUpload(self, env, start_response):
req = Request(env)
if 'QUERY_STRING' in env:
args = dict(urlparse.parse_qsl(env['QUERY_STRING'], 1))
else:
args = {}
uploadId = args['uploadId']
urlparts = urlparse.urlparse(req.url)
version, auth, ignored = split_path(urlparts.path, 2, 3, True)
# We must get the actual container/object info from the RAW_PATH_INFO
path = env['RAW_PATH_INFO']
container, obj = split_path(path, 0, 2, True)
if obj is None:
obj = os.path.basename(env['RAW_PATH_INFO'])
#
# Query for the objects in the segments area to make sure it completed
#
env['REQUEST_METHOD'] = 'GET'
env['PATH_INFO'] = ('/%s/%s/%s_segments' % (version, auth, container))
env['RAW_PATH_INFO'] = ('/%s/%s/%s_segments' % (version, auth,
container))
env['QUERY_STRING'] = 'format=json&limit=1001&prefix=%s/%s/' \
'&delimiter=/' % (obj, uploadId)
env['SCRIPT_NAME'] = ''
req = Request(env)
body_iter = self._app_call(env)
status = self._get_status_int()
objinfo = loads(''.join(list(body_iter)))
if len(objinfo) == 0:
return get_err_response('NoSuchBucket')
#
# Tell Swift the manifest info
# The content length should be 0 and the manifest should point to
# the segment container.
#
req.method = 'PUT'
req.headers['X-Object-Manifest'] = ('%s_segments/%s/%s' % (container,
obj, uploadId))
req.headers['Content-Length'] = '0'
env['PATH_INFO'] = ('/%s/%s/%s/%s' % (version, auth, container, obj))
env['RAW_PATH_INFO'] = ('/%s/%s/%s/%s' %
(version, auth, container, obj))
del env['QUERY_STRING']
env['SCRIPT_NAME'] = ''
req.body = ''
body_iter = self._app_call(env)
status = self._get_status_int()
if status != HTTP_OK and status != HTTP_CREATED:
if status == HTTP_UNAUTHORIZED:
return get_err_response('AccessDenied')
elif status == HTTP_NOT_FOUND:
return get_err_response('NoSuchBucket')
else:
return get_err_response('InvalidURI')
o = objinfo[0]
body = ('<?xml version="1.0" encoding="UTF-8"?>'
'<CompleteMultipartUploadResult '
'xmlns="http://s3.amazonaws.com/doc/2006-03-01">'
'<Location>%s://%s/%s/%s</Location>'
'<Bucket>%s</Bucket>'
'<Key>%s</Key>'
'<ETag>"%s"</ETag>'
'</CompleteMultipartUploadResult>' %
(urlparts.scheme, urlparts.netloc, container, obj, container,
o['name'], o['hash']))
resp = Response(body=body, content_type="application/xml")
return resp
示例4: completeMultipartUpload
# 需要导入模块: from swift.common.swob import Request [as 别名]
# 或者: from swift.common.swob.Request import body [as 别名]
def completeMultipartUpload(self, env, start_response):
req = Request(env)
if "QUERY_STRING" in env:
args = dict(urlparse.parse_qsl(env["QUERY_STRING"], 1))
else:
args = {}
uploadId = args["uploadId"]
parts = urlparse.urlparse(req.url)
version, auth, container, obj = split_path(parts.path, 0, 4, True)
if obj is None:
obj = os.path.basename(env["RAW_PATH_INFO"])
#
# Query for the objects in the segments area to make sure it completed
#
env["REQUEST_METHOD"] = "GET"
env["PATH_INFO"] = "/%s/%s/%s_segments" % (version, auth, container)
env["RAW_PATH_INFO"] = "/%s/%s/%s_segments" % (version, auth, container)
env["QUERY_STRING"] = "format=json&limit=1001&prefix=%s/%s/" "&delimiter=/" % (obj, uploadId)
env["SCRIPT_NAME"] = ""
req = Request(env)
body_iter = self._app_call(env)
status = self._get_status_int()
objinfo = loads("".join(list(body_iter)))
if len(objinfo) == 0:
return get_err_response("NoSuchBucket")
#
# Tell Swift the manifest info
# The content length should be 0 and the manifest should point to
# the segment container.
#
req.method = "PUT"
req.headers["X-Object-Manifest"] = "%s_segments/%s/%s" % (container, obj, uploadId)
req.headers["Content-Length"] = "0"
env["PATH_INFO"] = "/%s/%s/%s/%s" % (version, auth, container, obj)
env["RAW_PATH_INFO"] = "/%s/%s/%s/%s" % (version, auth, container, obj)
del env["QUERY_STRING"]
env["SCRIPT_NAME"] = ""
req.body = ""
body_iter = self._app_call(env)
status = self._get_status_int()
if status != HTTP_OK and status != HTTP_CREATED:
if status == HTTP_UNAUTHORIZED:
return get_err_response("AccessDenied")
elif status == HTTP_NOT_FOUND:
return get_err_response("NoSuchBucket")
else:
return get_err_response("InvalidURI")
o = objinfo[0]
body = (
'<?xml version="1.0" encoding="UTF-8"?>'
"<CompleteMultipartUploadResult "
'xmlns="http://s3.amazonaws.com/doc/2006-03-01">'
"<Location>%s://%s/%s/%s</Location>"
"<Bucket>%s</Bucket>"
"<Key>%s</Key>"
'<ETag>"%s"</ETag>'
"</CompleteMultipartUploadResult>"
% (parts.scheme, parts.netloc, container, obj, container, o["name"], o["hash"])
)
resp = Response(body=body, content_type="application/xml")
return resp