本文整理汇总了Python中swift.common.swob.Request.headers['X-Object-Manifest']方法的典型用法代码示例。如果您正苦于以下问题:Python Request.headers['X-Object-Manifest']方法的具体用法?Python Request.headers['X-Object-Manifest']怎么用?Python Request.headers['X-Object-Manifest']使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类swift.common.swob.Request
的用法示例。
在下文中一共展示了Request.headers['X-Object-Manifest']方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: completeMultipartUpload
# 需要导入模块: from swift.common.swob import Request [as 别名]
# 或者: from swift.common.swob.Request import headers['X-Object-Manifest'] [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