parse_host

in lib/elastic/transport/client.rb [266:306]


      def parse_host(host)
        host_parts = case host
                     when String
                       if host =~ /^[a-z]+\:\/\//
                         
                         
                         uri = URI::Generic.new(*URI.split(host))

                         default_port = uri.scheme == 'https' ? 443 : DEFAULT_PORT

                         { :scheme => uri.scheme,
                           :user => uri.user,
                           :password => uri.password,
                           :host => uri.host,
                           :path => uri.path,
                           :port => uri.port || default_port }
                       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 }
                     when Hash
                       host
                     else
                       raise ArgumentError, "Please pass host as a String, URI or Hash -- #{host.class} given."
                     end

        @arguments[:http][:user] ||= host_parts[:user]
        @arguments[:http][:password] ||= host_parts[:password]
        host_parts[:port] = host_parts[:port].to_i if host_parts[:port]
        host_parts[:path].chomp!('/') if host_parts[:path]
        host_parts
      end