diff options
author | drbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2012-07-19 22:43:38 +0000 |
---|---|---|
committer | drbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2012-07-19 22:43:38 +0000 |
commit | b1a0509b5465ce77f52e0384159237889a8d60ec () | |
tree | ea22ccb90a2367364e0c740f15ad571558b025f4 /lib/net/http | |
parent | ef19dcf96dd2e84c4fe0a46888a5afd0cd457f80 (diff) |
* lib/net/http/response.rb: Automatically inflate gzip and
deflate-encoded response bodies. [Feature #6942] * lib/net/http/generic_request.rb: Automatically accept gzip and deflate content-encoding for requests. [Feature #6494] * lib/net/http/request.rb: Updated documentation for #6494. * lib/net/http.rb: Updated documentation for #6492 and #6494, removed Content-Encoding handling now present in Net::HTTPResponse. * test/net/http/test_httpresponse.rb: Tests for #6492 * test/net/http/test_http_request.rb: Tests for #6494 * test/open-uri/test_open-uri.rb (test_content_encoding): Updated test for automatic content-encoding handling. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36473 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | lib/net/http/generic_request.rb | 12 | ||||
-rw-r--r-- | lib/net/http/request.rb | 7 | ||||
-rw-r--r-- | lib/net/http/response.rb | 147 |
3 files changed, 147 insertions, 19 deletions
@@ -14,6 +14,18 @@ class Net::HTTPGenericRequest raise ArgumentError, "no HTTP request path given" unless path raise ArgumentError, "HTTP request path is empty" if path.empty? @path = path initialize_http_header initheader self['Accept'] ||= '*/*' self['User-Agent'] ||= 'Ruby' @@ -4,7 +4,12 @@ # subclasses: Net::HTTP::Get, Net::HTTP::Post, Net::HTTP::Head. # class Net::HTTPRequest < Net::HTTPGenericRequest - # Creates HTTP request object. def initialize(path, initheader = nil) super self.class::METHOD, self.class::REQUEST_HAS_BODY, @@ -222,25 +222,70 @@ class Net::HTTPResponse private - def read_body_0(dest) - if chunked? - read_chunked dest - return - end - clen = content_length() - if clen - @socket.read clen, dest, true # ignore EOF - return end - clen = range_length() - if clen - @socket.read clen, dest - return end - @socket.read_all dest end - def read_chunked(dest) len = nil total = 0 while true @@ -250,7 +295,7 @@ class Net::HTTPResponse len = hexlen.hex break if len == 0 begin - @socket.read len, dest ensure total += len @socket.read 2 # \r\n @@ -266,8 +311,8 @@ class Net::HTTPResponse end def procdest(dest, block) - raise ArgumentError, 'both arg and block given for HTTP method' \ - if dest and block if block Net::ReadAdapter.new(block) else @@ -275,5 +320,71 @@ class Net::HTTPResponse end end end |