support ranged get in S3
This commit is contained in:
parent
8a8aba3395
commit
dbf1e64d44
@ -234,11 +234,16 @@ class ResponseObject(_TemplateEnvironmentMixin):
|
||||
except MissingBucket:
|
||||
return 404, headers, ""
|
||||
|
||||
begin = 0
|
||||
end = None
|
||||
if 'range' in request.headers:
|
||||
begin, end = map(int, request.headers.get('range').split('-'))
|
||||
|
||||
if isinstance(response, six.string_types):
|
||||
return 200, headers, response
|
||||
return 200, headers, response[begin:end]
|
||||
else:
|
||||
status_code, headers, response_content = response
|
||||
return status_code, headers, response_content
|
||||
return status_code, headers, response_content[begin:end]
|
||||
|
||||
def _key_response(self, request, full_url, headers):
|
||||
parsed_url = urlparse(full_url)
|
||||
|
@ -692,3 +692,13 @@ def test_bucket_location():
|
||||
conn = boto.s3.connect_to_region("us-west-2")
|
||||
bucket = conn.create_bucket('mybucket')
|
||||
bucket.get_location().should.equal("us-west-2")
|
||||
|
||||
|
||||
@mock_s3
|
||||
def test_ranged_get():
|
||||
conn = boto.connect_s3()
|
||||
bucket = conn.create_bucket('mybucket')
|
||||
key = Key(bucket)
|
||||
key.key = 'bigkey'
|
||||
key.set_contents_from_string('0' * 50 + '1' * 50)
|
||||
key.get_contents_as_string(headers={'Range': '45-55'}).should.equal('0' * 5 + '1' * 5)
|
||||
|
Loading…
Reference in New Issue
Block a user