Class: Mechanize::Chain::ResponseReader
- Inherits:
-
Object
- Object
- Mechanize::Chain::ResponseReader
- Includes:
- Handler
- Defined in:
- lib/mechanize/chain/response_reader.rb
Instance Attribute Summary
Attributes included from Handler
Instance Method Summary collapse
- #handle(ctx, params) ⇒ Object
-
#initialize(response) ⇒ ResponseReader
constructor
A new instance of ResponseReader.
Constructor Details
#initialize(response) ⇒ ResponseReader
Returns a new instance of ResponseReader.
6 7 8 |
# File 'lib/mechanize/chain/response_reader.rb', line 6 def initialize(response) @response = response end |
Instance Method Details
#handle(ctx, params) ⇒ Object
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/mechanize/chain/response_reader.rb', line 10 def handle(ctx, params) params[:response] = @response body = StringIO.new total = 0 @response.read_body { |part| total += part.length body.write(part) Mechanize.log.debug("Read #{total} bytes") if Mechanize.log } body.rewind res_klass = Net::HTTPResponse::CODE_TO_OBJ[@response.code.to_s] raise ResponseCodeError.new(@response) unless res_klass # Net::HTTP ignores EOFError if Content-length is given, so we emulate it here. unless res_klass <= Net::HTTPRedirection raise EOFError if (!params[:request].is_a?(Net::HTTP::Head)) && @response.content_length() && @response.content_length() != total end @response.each_header { |k,v| Mechanize.log.debug("response-header: #{ k } => #{ v }") } if Mechanize.log params[:response_body] = body params[:res_klass] = res_klass super end |