Project

General

Profile

Bug #12055 ยป custom_content_range.patch

ggcampinho (Glauber Campinho), 02/05/2016 01:30 PM

View differences:

lib/net/http/header.rb
m[1].to_i .. m[2].to_i
end
def content_range_unit
return nil unless @header['content-range']
match = /(?<unit>\S+)\s/i.match(self['Content-Range'])
match[:unit]
end
# The length of the range represented in Content-Range: header.
def range_length
r = content_range() or return nil
lib/net/http/response.rb
def inflater # :nodoc:
return yield @socket unless Net::HTTP::HAVE_ZLIB
return yield @socket unless @decode_content
return yield @socket if self['content-range']
return yield @socket if content_range_unit == 'bytes'
v = self['content-encoding']
case v && v.downcase
test/net/http/test_httpresponse.rb
assert_equal "\x1F\x8B\b\x00\x00\x00\x00\x00\x00\x03", body
end
def test_read_body_content_encoding_ignore_custom_content_range
io = dummy_io(<<EOS)
HTTP/1.1 200 OK
Accept-Ranges: items
Content-Range: items 1-1/10
Content-Encoding: gzip
Connection: close
Transfer-Encoding: chunked
6
x\x9C\xCBH\xCD\xC9
7
\xC9\a\x00\x06,\x02\x15
0
EOS
res = Net::HTTPResponse.read_new(io)
res.decode_content = true
body = nil
res.reading_body io, true do
body = res.read_body
end
assert_equal 'hello', body
end
def test_read_body_content_encoding_deflate_empty_body
io = dummy_io(<<EOS)
HTTP/1.1 200 OK
    (1-1/1)