1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

* lib/net/http: Do not handle Content-Encoding when the user sets

Accept-Encoding.  This allows users to handle Content-Encoding for
  themselves.  This restores backwards-compatibility with Ruby 1.x.
* lib/net/http/generic_request.rb:  ditto.
* lib/net/http/response.rb:  ditto
* test/net/http/test_http.rb:  Test for the above.
* test/net/http/test_http_request.rb:  ditto.
* test/net/http/test_httpresponse.rb:  ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39232 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
drbrain 2013-02-14 01:08:19 +00:00
parent d266423f87
commit f58d398075
7 changed files with 104 additions and 0 deletions

View file

@ -27,11 +27,14 @@ class Net::HTTPGenericRequest
raise ArgumentError, "HTTP request path is empty" if path.empty?
@path = path
@decode_content = false
if @response_has_body and Net::HTTP::HAVE_ZLIB then
if !initheader ||
!initheader.keys.any? { |k|
%w[accept-encoding range].include? k.downcase
} then
@decode_content = true
initheader = initheader ? initheader.dup : {}
initheader["accept-encoding"] =
"gzip;q=1.0,deflate;q=0.6,identity;q=0.3"
@ -51,10 +54,25 @@ class Net::HTTPGenericRequest
attr_reader :path
attr_reader :uri
# Automatically set to false if the user sets the Accept-Encoding header.
# This indicates they wish to handle Content-encoding in responses
# themselves.
attr_reader :decode_content
def inspect
"\#<#{self.class} #{@method}>"
end
##
# Don't automatically decode response content-encoding if the user indicates
# they want to handle it.
def []=(key, val) # :nodoc:
@decode_content = false if key.downcase == 'accept-encoding'
super key, val
end
def request_body_permitted?
@request_has_body
end
@ -291,6 +309,7 @@ class Net::HTTPGenericRequest
if IO.select([sock.io], nil, nil, sock.continue_timeout)
res = Net::HTTPResponse.read_new(sock)
unless res.kind_of?(Net::HTTPContinue)
res.decode_content = @decode_content
throw :response, res
end
end