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