def _handle_get(gcs_stub, filename, param_dict, headers):
"""Handle GET object and GET bucket."""
mo = re.match(BUCKET_ONLY_PATH, filename)
if mo is not None:
return _handle_get_bucket(gcs_stub, mo.group(1), param_dict)
else:
result = _handle_head(gcs_stub, filename)
if result.status_code == httplib.NOT_FOUND:
return result
start, end = _Range(headers).value
st_size = result.headers['x-goog-stored-content-length']
if end is not None:
result.status_code = httplib.PARTIAL_CONTENT
end = min(end, st_size - 1)
result.headers['content-range'] = 'bytes %d-%d/%d' % (start, end, st_size)
result.content = gcs_stub.get_object(filename, start, end)
result.headers['content-length'] = len(result.content)
return result
评论列表
文章目录