fix uri building issue where host/port should be specified before scheme

This commit is contained in:
rick 2010-04-27 08:54:56 -04:00
parent 4d266f42b6
commit 403ea34529
2 changed files with 11 additions and 7 deletions

View File

@ -137,9 +137,9 @@ module Faraday
# #
def build_url(url, params = nil) def build_url(url, params = nil)
uri = URI.parse(url.to_s) uri = URI.parse(url.to_s)
uri.scheme ||= @scheme
uri.host ||= @host uri.host ||= @host
uri.port ||= @port uri.port ||= @port
uri.scheme ||= @scheme
if @path_prefix && uri.path !~ /^\// if @path_prefix && uri.path !~ /^\//
uri.path = "#{@path_prefix.size > 1 ? @path_prefix : nil}/#{uri.path}" uri.path = "#{@path_prefix.size > 1 ? @path_prefix : nil}/#{uri.path}"
end end

View File

@ -139,16 +139,20 @@ class TestConnection < Faraday::TestCase
assert_no_match /token=abc/, url.query assert_no_match /token=abc/, url.query
end end
def test_build_url_parses_url_into_host def test_build_url_parses_url
conn = Faraday::Connection.new conn = Faraday::Connection.new
uri = conn.build_url("http://sushi.com/sake.html") uri = conn.build_url("http://sushi.com/sake.html")
assert_equal "sushi.com", uri.host assert_equal "http", uri.scheme
assert_equal "sushi.com", uri.host
assert_equal '/sake.html', uri.path
assert_nil uri.port
end end
def test_build_url_parses_url_into_port def test_build_url_parses_url_and_changes_scheme
conn = Faraday::Connection.new conn = Faraday::Connection.new :url => "http://sushi.com/sushi"
uri = conn.build_url("http://sushi.com/sake.html") conn.scheme = 'https'
assert_nil uri.port uri = conn.build_url("sake.html")
assert_equal 'https://sushi.com/sushi/sake.html', uri.to_s
end end
def test_params_to_query_converts_hash_of_params_to_uri_escaped_query_string def test_params_to_query_converts_hash_of_params_to_uri_escaped_query_string