lib/elasticsearch/transport/transport/http/curb.rb in elasticsearch-transport-0.4.0 vs lib/elasticsearch/transport/transport/http/curb.rb in elasticsearch-transport-0.4.1

- old
+ new

@@ -18,19 +18,18 @@ def perform_request(method, path, params={}, body=nil) super do |connection,url| connection.connection.url = url case method - when 'HEAD', 'GET' then connection.connection.http method.downcase.to_sym - when 'PUT' then connection.connection.http_put serializer.dump(body) - when 'DELETE' then connection.connection.http_delete - when 'POST' - connection.connection.post_body = __convert_to_json(body) if body - connection.connection.http_post + when 'HEAD' + when 'GET', 'POST', 'PUT', 'DELETE' + connection.connection.put_data = __convert_to_json(body) if body else raise ArgumentError, "Unsupported HTTP method: #{method}" end + connection.connection.http(method.to_sym) + Response.new connection.connection.response_code, connection.connection.body_str end end # Builds and returns a collection of connections. @@ -38,16 +37,22 @@ # @return [Connections::Collection] # def __build_connections Connections::Collection.new \ :connections => hosts.map { |host| - host[:protocol] ||= DEFAULT_PROTOCOL + host[:protocol] = host[:scheme] || DEFAULT_PROTOCOL host[:port] ||= DEFAULT_PORT client = ::Curl::Easy.new client.resolve_mode = :ipv4 - client.headers = {'Content-Type' => 'application/json'} - client.url = "#{host[:protocol]}://#{host[:host]}:#{host[:port]}" + client.headers = {'User-Agent' => "Curb #{Curl::CURB_VERSION}", 'Content-Type' => 'application/json' } + client.url = __full_url(host) + + if host[:user] + client.http_auth_types = host[:auth_type] || :basic + client.username = host[:user] + client.password = host[:password] + end client.instance_eval &@block if @block Connections::Connection.new :host => host, :connection => client },