1
0
Fork 0
mirror of https://github.com/jnunemaker/httparty synced 2023-03-27 23:23:07 -04:00

base_uri is no longer required. #get can take a full url and will fetch response.

This commit is contained in:
John Nunemaker 2008-07-28 15:47:05 -04:00
parent d43806a71d
commit f4570a46c1
2 changed files with 16 additions and 17 deletions

View file

@ -52,17 +52,6 @@ module HTTParty
@format = f
end
def http
if @http.blank?
uri = URI.parse(base_uri)
@http = Net::HTTP.new(uri.host, uri.port)
@http.use_ssl = (uri.port == 443)
# so we can avoid ssl warnings
@http.verify_mode = OpenSSL::SSL::VERIFY_NONE
end
@http
end
# TODO: spec out this
def get(path, options={})
send_request 'get', path, options
@ -84,6 +73,16 @@ module HTTParty
end
private
def http(uri)
if @http.blank?
@http = Net::HTTP.new(uri.host, uri.port)
@http.use_ssl = (uri.port == 443)
# so we can avoid ssl warnings
@http.verify_mode = OpenSSL::SSL::VERIFY_NONE
end
@http
end
# options can be any or all of:
# query => hash of keys/values to be converted to query string
# body => string for raw post data
@ -93,16 +92,17 @@ module HTTParty
raise ArgumentError, ':query must be a hash' if options[:query] && !options[:query].is_a?(Hash)
raise ArgumentError, ':headers must be a hash' if options[:headers] && !options[:headers].is_a?(Hash)
# we always want path that begins with /
path = path.starts_with?('/') ? path : "/#{path}"
path = path =~ /^(\/|https?:\/\/)/ ? path : "/#{path}"
@format ||= format_from_path(path)
uri = URI.parse("#{base_uri}#{path}")
uri.query = default_params.merge(options[:query] || {}).to_query
current_qs = uri.query ? "#{uri.query}&" : ''
uri.query = current_qs + default_params.merge(options[:query] || {}).to_query
klass = Net::HTTP.const_get method.to_s.downcase.capitalize
request = klass.new(uri.request_uri)
request.body = options[:body] unless options[:body].blank?
request.initialize_http_header headers.merge(options[:headers] || {})
request.basic_auth(@auth[:username], @auth[:password]) if @auth
response = http.start() { |conn| conn.request(request) }
response = http(uri).start() { |conn| conn.request(request) }
parse_response(response.body)
end

View file

@ -83,12 +83,11 @@ describe HTTParty do
describe 'http' do
it "should use ssl for port 443" do
FooWithHttps.http.use_ssl?.should == true
FooWithHttps.send(:http, URI.parse('https://api.foo.com/v1:443')).use_ssl?.should == true
end
it 'should not use ssl for port 80' do
Foo.base_uri('foobar.com')
Foo.http.use_ssl?.should == false
Foo.send(:http, URI.parse('http://foobar.com')).use_ssl?.should == false
end
end