lib/elasticsearch/transport/client.rb in elasticsearch-transport-0.4.0 vs lib/elasticsearch/transport/client.rb in elasticsearch-transport-0.4.1

- old
+ new

@@ -103,16 +103,22 @@ hosts_config = hosts_config.nil? ? ['localhost'] : Array(hosts_config) hosts = hosts_config.map do |host| case host when String - # TODO: Handle protocol? - host, port = host.split(':') - { :host => host, :port => port } + if host =~ /^[a-z]+\:\/\// + uri = URI.parse(host) + { :scheme => uri.scheme, :user => uri.user, :password => uri.password, :host => uri.host, :path => uri.path, :port => uri.port.to_s } + else + host, port = host.split(':') + { :host => host, :port => port } + end + when URI + { :scheme => host.scheme, :user => host.user, :password => host.password, :host => host.host, :path => host.path, :port => host.port.to_s } when Hash host else - raise ArgumentError, "Please pass host as a String or Hash, #{host.class} given." + raise ArgumentError, "Please pass host as a String, URI or Hash -- #{host.class} given." end end hosts.shuffle! if options[:randomize_hosts] hosts