1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

* lib/xmlrpc/client.rb (new2): use URI for uri parsing.

* test/xmlrpc/test_client.rb: test that query params are passed to the
  client constructor.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34884 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
tenderlove 2012-03-02 23:46:17 +00:00
parent cd85cd25b4
commit 1836f44fe9
3 changed files with 32 additions and 16 deletions

View file

@ -339,24 +339,23 @@ module XMLRPC
class << self
def new2(uri, proxy=nil, timeout=nil)
if match = /^([^:]+):\/\/(([^@]+)@)?([^\/]+)(\/.*)?$/.match(uri)
proto = match[1]
user, passwd = (match[3] || "").split(":")
host, port = match[4].split(":")
path = match[5]
case proto
when 'http' then port ||= 80
when 'https' then port ||= 443
else
raise ArgumentError, "Wrong protocol specified. Only http or https allowed!"
end
port = port.to_i
else
raise ArgumentError, "Wrong URI as parameter!"
begin
url = URI(uri)
rescue URI::InvalidURIError => e
raise ArgumentError, e.message, e.backtrace
end
unless URI::HTTP === url
raise ArgumentError, "Wrong protocol specified. Only http or https allowed!"
end
proto = url.scheme
user = url.user
passwd = url.password
host = url.host
port = url.port
path = url.path.empty? ? nil : url.request_uri
proxy_host, proxy_port = (proxy || "").split(":")
proxy_port = proxy_port.to_i if proxy_port