diff --git a/lib/httparty/request.rb b/lib/httparty/request.rb index 830e4c9..1155338 100644 --- a/lib/httparty/request.rb +++ b/lib/httparty/request.rb @@ -31,6 +31,7 @@ module HTTParty def perform validate! + setup_raw_request handle_response!(get_response) end @@ -41,22 +42,28 @@ module HTTParty http.verify_mode = OpenSSL::SSL::VERIFY_NONE http end - - def get_response #:nodoc: - request = http_method.new(uri.request_uri) + + def setup_raw_request + @raw_request = http_method.new(uri.request_uri) if post? && options[:query] - request.set_form_data(options[:query]) + @raw_request.set_form_data(options[:query]) end - request.body = options[:body].is_a?(Hash) ? options[:body].to_params : options[:body] unless options[:body].blank? - request.initialize_http_header options[:headers] + @raw_request.body = options[:body].is_a?(Hash) ? options[:body].to_params : options[:body] unless options[:body].blank? + @raw_request.initialize_http_header options[:headers] if options[:basic_auth] - request.basic_auth(options[:basic_auth][:username], options[:basic_auth][:password]) + @raw_request.basic_auth(options[:basic_auth][:username], options[:basic_auth][:password]) end - - response = http(uri).request(request) + end + + def perform_actual_request + http(uri).request(@raw_request) + end + + def get_response #:nodoc: + response = perform_actual_request options[:format] ||= format_from_mimetype(response['content-type']) response end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 19c2e29..358b484 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -10,15 +10,12 @@ end def stub_http_response_with(filename) format = filename.split('.').last.intern data = file_fixture(filename) - http = Net::HTTP.new('localhost', 80) - + response = Net::HTTPOK.new("1.1", 200, "Content for you") response.stub!(:body).and_return(data) - http.stub!(:request).and_return(response) - - http_request = HTTParty::Request.new(Net::HTTP::Get, '') - http_request.stub!(:get_response).and_return(response) - http_request.stub!(:format).and_return(format) - + + http_request = HTTParty::Request.new(Net::HTTP::Get, 'http://localhost', :format => format) + http_request.stub!(:perform_actual_request).and_return(response) + HTTParty::Request.should_receive(:new).and_return(http_request) end \ No newline at end of file