Index: lib/net/http/generic_request.rb =================================================================== --- lib/net/http/generic_request.rb (revision 35836) +++ lib/net/http/generic_request.rb (working copy) @@ -14,6 +14,16 @@ class Net::HTTPGenericRequest raise ArgumentError, "no HTTP request path given" unless path raise ArgumentError, "HTTP request path is empty" if path.empty? @path = path + + if @response_has_body and Net::HTTP::HAVE_ZLIB then + if !initheader || + !initheader.keys.any? { |k| k.downcase == "accept-encoding" } then + initheader = initheader ? initheader.dup : {} + initheader["accept-encoding"] = + "gzip;q=1.0,deflate;q=0.6,identity;q=0.3" + end + end + initialize_http_header initheader self['Accept'] ||= '*/*' self['User-Agent'] ||= 'Ruby' Index: lib/net/http.rb =================================================================== --- lib/net/http.rb (revision 35836) +++ lib/net/http.rb (working copy) @@ -1029,14 +1029,6 @@ module Net #:nodoc: # def get(path, initheader = {}, dest = nil, &block) # :yield: +body_segment+ res = nil - if HAVE_ZLIB - unless initheader.keys.any?{|k| k.downcase == "accept-encoding"} - initheader = initheader.merge({ - "accept-encoding" => "gzip;q=1.0,deflate;q=0.6,identity;q=0.3" - }) - @compression = true - end - end request(Get.new(path, initheader)) {|r| if r.key?("content-encoding") and @compression @compression = nil # Clear it till next set. Index: test/net/http/test_http_request.rb =================================================================== --- test/net/http/test_http_request.rb (revision 0) +++ test/net/http/test_http_request.rb (revision 0) @@ -0,0 +1,41 @@ +require 'net/http' +require 'test/unit' +require 'stringio' + +class HTTPRequestTest < Test::Unit::TestCase + + def test_initialize_GET + req = Net::HTTP::Get.new '/' + + assert_equal 'GET', req.method + refute req.request_body_permitted? + assert req.response_body_permitted? + + expected = { + 'accept' => %w[*/*], + 'user-agent' => %w[Ruby], + } + + expected['accept-encoding'] = %w[gzip;q=1.0,deflate;q=0.6,identity;q=0.3] if + Net::HTTP::HAVE_ZLIB + + assert_equal expected, req.to_hash + end + + def test_initialize_HEAD + req = Net::HTTP::Head.new '/' + + assert_equal 'HEAD', req.method + refute req.request_body_permitted? + refute req.response_body_permitted? + + expected = { + 'accept' => %w[*/*], + 'user-agent' => %w[Ruby], + } + + assert_equal expected, req.to_hash + end + +end +