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
},