elasticsearch-transport 6.8.3 → 7.0.0.pre

Sign up to get free protection for your applications and to get access to all the features.
Files changed (41) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +17 -0
  3. data/LICENSE.txt +199 -10
  4. data/README.md +32 -86
  5. data/Rakefile +23 -4
  6. data/elasticsearch-transport.gemspec +78 -45
  7. data/lib/elasticsearch-transport.rb +16 -3
  8. data/lib/elasticsearch/transport.rb +17 -3
  9. data/lib/elasticsearch/transport/client.rb +70 -174
  10. data/lib/elasticsearch/transport/redacted.rb +5 -9
  11. data/lib/elasticsearch/transport/transport/base.rb +63 -55
  12. data/lib/elasticsearch/transport/transport/connections/collection.rb +16 -3
  13. data/lib/elasticsearch/transport/transport/connections/connection.rb +16 -3
  14. data/lib/elasticsearch/transport/transport/connections/selector.rb +16 -3
  15. data/lib/elasticsearch/transport/transport/errors.rb +16 -3
  16. data/lib/elasticsearch/transport/transport/http/curb.rb +18 -5
  17. data/lib/elasticsearch/transport/transport/http/faraday.rb +18 -5
  18. data/lib/elasticsearch/transport/transport/http/manticore.rb +17 -4
  19. data/lib/elasticsearch/transport/transport/loggable.rb +85 -0
  20. data/lib/elasticsearch/transport/transport/response.rb +16 -3
  21. data/lib/elasticsearch/transport/transport/serializer/multi_json.rb +16 -3
  22. data/lib/elasticsearch/transport/transport/sniffer.rb +17 -5
  23. data/lib/elasticsearch/transport/version.rb +17 -4
  24. data/spec/elasticsearch/transport/base_spec.rb +8 -187
  25. data/spec/elasticsearch/transport/client_spec.rb +29 -163
  26. data/spec/elasticsearch/transport/sniffer_spec.rb +19 -0
  27. data/spec/spec_helper.rb +2 -11
  28. data/test/integration/transport_test.rb +18 -5
  29. data/test/profile/client_benchmark_test.rb +16 -3
  30. data/test/test_helper.rb +63 -14
  31. data/test/unit/connection_collection_test.rb +17 -4
  32. data/test/unit/connection_selector_test.rb +17 -4
  33. data/test/unit/connection_test.rb +17 -4
  34. data/test/unit/response_test.rb +18 -5
  35. data/test/unit/serializer_test.rb +17 -4
  36. data/test/unit/transport_base_test.rb +21 -8
  37. data/test/unit/transport_curb_test.rb +17 -4
  38. data/test/unit/transport_faraday_test.rb +17 -4
  39. data/test/unit/transport_manticore_test.rb +24 -6
  40. metadata +61 -86
  41. data/spec/elasticsearch/transport/meta_header_spec.rb +0 -214
@@ -1,59 +1,92 @@
1
+ # Licensed to Elasticsearch B.V. under one or more contributor
2
+ # license agreements. See the NOTICE file distributed with
3
+ # this work for additional information regarding copyright
4
+ # ownership. Elasticsearch B.V. licenses this file to you under
5
+ # the Apache License, Version 2.0 (the "License"); you may
6
+ # not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing,
12
+ # software distributed under the License is distributed on an
13
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
+ # KIND, either express or implied. See the License for the
15
+ # specific language governing permissions and limitations
16
+ # under the License.
17
+
1
18
  # coding: utf-8
2
19
  lib = File.expand_path('../lib', __FILE__)
3
20
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
21
  require 'elasticsearch/transport/version'
5
22
 
6
23
  Gem::Specification.new do |s|
7
- s.name = 'elasticsearch-transport'
24
+ s.name = "elasticsearch-transport"
8
25
  s.version = Elasticsearch::Transport::VERSION
9
- s.authors = ['Karel Minarik']
10
- s.email = ['karel.minarik@elasticsearch.org']
11
- s.summary = 'Ruby client for Elasticsearch.'
12
- s.homepage = 'https://www.elastic.co/guide/en/elasticsearch/client/ruby-api/current/index.html'
13
- s.license = 'Apache-2.0'
14
- s.metadata = {
15
- 'homepage_uri' => 'https://www.elastic.co/guide/en/elasticsearch/client/ruby-api/current/index.html',
16
- 'changelog_uri' => 'https://github.com/elastic/elasticsearch-ruby/blob/6.x/CHANGELOG.md',
17
- 'source_code_uri' => 'https://github.com/elastic/elasticsearch-ruby/tree/6.x/elasticsearch-transport',
18
- 'bug_tracker_uri' => 'https://github.com/elastic/elasticsearch-ruby/issues'
19
- }
26
+ s.authors = ["Karel Minarik"]
27
+ s.email = ["karel.minarik@elasticsearch.org"]
28
+ s.summary = "Ruby client for Elasticsearch."
29
+ s.homepage = "https://github.com/elasticsearch/elasticsearch-ruby/tree/master/elasticsearch-transport"
30
+ s.license = "Apache-2.0"
31
+
20
32
  s.files = `git ls-files`.split($/)
21
33
  s.executables = s.files.grep(%r{^bin/}) { |f| File.basename(f) }
22
34
  s.test_files = s.files.grep(%r{^(test|spec|features)/})
23
- s.require_paths = ['lib']
24
-
25
- s.extra_rdoc_files = ['README.md', 'LICENSE.txt']
26
- s.rdoc_options = ['--charset=UTF-8']
27
-
28
- s.required_ruby_version = '>= 2.4'
29
-
30
- s.add_dependency 'multi_json'
31
- s.add_dependency 'faraday', '~> 1'
32
- s.add_development_dependency 'ansi'
33
- s.add_development_dependency 'bundler'
34
- s.add_development_dependency 'elasticsearch-extensions'
35
- s.add_development_dependency 'mocha'
36
- s.add_development_dependency 'pry'
37
- s.add_development_dependency 'rake', '~> 13'
38
- s.add_development_dependency 'shoulda-context'
39
- s.add_development_dependency 'turn'
40
- s.add_development_dependency 'yard'
35
+ s.require_paths = ["lib"]
36
+
37
+ s.extra_rdoc_files = [ "README.md", "LICENSE.txt" ]
38
+ s.rdoc_options = [ "--charset=UTF-8" ]
39
+
40
+ s.required_ruby_version = '>= 1.9'
41
+
42
+ s.add_dependency "multi_json"
43
+ s.add_dependency "faraday"
44
+
45
+ if defined?(RUBY_VERSION) && RUBY_VERSION < '1.9'
46
+ s.add_dependency "system_timer"
47
+ end
48
+
49
+ s.add_development_dependency "bundler"
50
+
51
+ if defined?(RUBY_VERSION) && RUBY_VERSION > '1.9'
52
+ s.add_development_dependency "rake", "~> 11.1"
53
+ else
54
+ s.add_development_dependency "rake", "< 11.0"
55
+ end
56
+
57
+ s.add_development_dependency "ansi"
58
+ s.add_development_dependency "shoulda-context"
59
+ s.add_development_dependency "mocha"
60
+ s.add_development_dependency "yard"
61
+ s.add_development_dependency "pry"
62
+
41
63
  # Gems for testing integrations
42
- s.add_development_dependency 'cane'
43
- s.add_development_dependency 'hashie'
44
- s.add_development_dependency 'httpclient'
45
- s.add_development_dependency 'manticore', '~> 0.5.2' if defined? JRUBY_VERSION
46
- s.add_development_dependency 'minitest', '~> 4.0'
47
- s.add_development_dependency 'net-http-persistent'
48
- s.add_development_dependency 'simplecov', '~> 0.17', '< 0.18'
49
- s.add_development_dependency 'simplecov-rcov'
50
- s.add_development_dependency 'test-unit', '~> 2'
51
- s.add_development_dependency 'typhoeus', '~> 1.4'
52
- unless defined?(JRUBY_VERSION) || defined?(Rubinius)
53
- s.add_development_dependency 'curb'
54
- s.add_development_dependency 'patron'
55
- s.add_development_dependency 'require-prof'
56
- s.add_development_dependency 'ruby-prof'
64
+ s.add_development_dependency "curb" unless defined? JRUBY_VERSION
65
+ s.add_development_dependency "patron" unless defined? JRUBY_VERSION
66
+ s.add_development_dependency "typhoeus", '~> 0.6'
67
+ s.add_development_dependency "net-http-persistent"
68
+ s.add_development_dependency "manticore", '~> 0.6' if defined? JRUBY_VERSION
69
+ s.add_development_dependency "hashie"
70
+
71
+ # Prevent unit test failures on Ruby 1.8
72
+ if defined?(RUBY_VERSION) && RUBY_VERSION < '1.9'
73
+ s.add_development_dependency "test-unit", '~> 2'
74
+ s.add_development_dependency "json", '~> 1.8'
75
+ end
76
+
77
+ if defined?(RUBY_VERSION) && RUBY_VERSION > '1.9'
78
+ s.add_development_dependency "minitest"
79
+ s.add_development_dependency "minitest-reporters"
80
+ s.add_development_dependency "elasticsearch-extensions"
81
+ s.add_development_dependency "ruby-prof" unless defined?(JRUBY_VERSION) || defined?(Rubinius)
82
+ s.add_development_dependency "require-prof" unless defined?(JRUBY_VERSION) || defined?(Rubinius)
83
+ s.add_development_dependency "simplecov"
84
+ s.add_development_dependency "simplecov-rcov"
85
+ s.add_development_dependency "cane"
86
+ end
87
+
88
+ if defined?(RUBY_VERSION) && RUBY_VERSION > '2.2'
89
+ s.add_development_dependency "test-unit", '~> 2'
57
90
  end
58
91
 
59
92
  s.description = <<-DESC.gsub(/^ /, '')
@@ -1,5 +1,18 @@
1
- # Licensed to Elasticsearch B.V under one or more agreements.
2
- # Elasticsearch B.V licenses this file to you under the Apache 2.0 License.
3
- # See the LICENSE file in the project root for more information
1
+ # Licensed to Elasticsearch B.V. under one or more contributor
2
+ # license agreements. See the NOTICE file distributed with
3
+ # this work for additional information regarding copyright
4
+ # ownership. Elasticsearch B.V. licenses this file to you under
5
+ # the Apache License, Version 2.0 (the "License"); you may
6
+ # not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing,
12
+ # software distributed under the License is distributed on an
13
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
+ # KIND, either express or implied. See the License for the
15
+ # specific language governing permissions and limitations
16
+ # under the License.
4
17
 
5
18
  require 'elasticsearch/transport'
@@ -1,6 +1,19 @@
1
- # Licensed to Elasticsearch B.V under one or more agreements.
2
- # Elasticsearch B.V licenses this file to you under the Apache 2.0 License.
3
- # See the LICENSE file in the project root for more information
1
+ # Licensed to Elasticsearch B.V. under one or more contributor
2
+ # license agreements. See the NOTICE file distributed with
3
+ # this work for additional information regarding copyright
4
+ # ownership. Elasticsearch B.V. licenses this file to you under
5
+ # the Apache License, Version 2.0 (the "License"); you may
6
+ # not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing,
12
+ # software distributed under the License is distributed on an
13
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
+ # KIND, either express or implied. See the License for the
15
+ # specific language governing permissions and limitations
16
+ # under the License.
4
17
 
5
18
  require "uri"
6
19
  require "time"
@@ -8,6 +21,7 @@ require "timeout"
8
21
  require "multi_json"
9
22
  require "faraday"
10
23
 
24
+ require "elasticsearch/transport/transport/loggable"
11
25
  require "elasticsearch/transport/transport/serializer/multi_json"
12
26
  require "elasticsearch/transport/transport/sniffer"
13
27
  require "elasticsearch/transport/transport/response"
@@ -1,6 +1,19 @@
1
- # Licensed to Elasticsearch B.V under one or more agreements.
2
- # Elasticsearch B.V licenses this file to you under the Apache 2.0 License.
3
- # See the LICENSE file in the project root for more information
1
+ # Licensed to Elasticsearch B.V. under one or more contributor
2
+ # license agreements. See the NOTICE file distributed with
3
+ # this work for additional information regarding copyright
4
+ # ownership. Elasticsearch B.V. licenses this file to you under
5
+ # the Apache License, Version 2.0 (the "License"); you may
6
+ # not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing,
12
+ # software distributed under the License is distributed on an
13
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
+ # KIND, either express or implied. See the License for the
15
+ # specific language governing permissions and limitations
16
+ # under the License.
4
17
 
5
18
  module Elasticsearch
6
19
  module Transport
@@ -89,19 +102,11 @@ module Elasticsearch
89
102
  # @option arguments [String] :send_get_body_as Specify the HTTP method to use for GET requests with a body.
90
103
  # (Default: GET)
91
104
  #
92
- # @option api_key [String, Hash] :api_key Use API Key Authentication, either the base64 encoding of `id` and `api_key`
93
- # joined by a colon as a String, or a hash with the `id` and `api_key` values.
94
- # @option opaque_id_prefix [String] :opaque_id_prefix set a prefix for X-Opaque-Id when initializing the client. This
95
- # will be prepended to the id you set before each request if
96
- # you're using X-Opaque-Id
97
- # @option enable_meta_header [Boolean] :enable_meta_header Enable sending the meta data header to Cloud.
98
- # (Default: true)
99
- #
100
105
  # @yield [faraday] Access and configure the `Faraday::Connection` instance directly with a block
101
106
  #
102
- def initialize(arguments = {}, &block)
103
- @options = arguments.each_with_object({}){ |(k,v), args| args[k.to_sym] = v }
104
- @arguments = @options
107
+ def initialize(arguments={}, &block)
108
+ @options = arguments
109
+ @arguments = arguments
105
110
  @arguments[:logger] ||= @arguments[:log] ? DEFAULT_LOGGER.call() : nil
106
111
  @arguments[:tracer] ||= @arguments[:trace] ? DEFAULT_TRACER.call() : nil
107
112
  @arguments[:reload_connections] ||= false
@@ -110,13 +115,9 @@ module Elasticsearch
110
115
  @arguments[:randomize_hosts] ||= false
111
116
  @arguments[:transport_options] ||= {}
112
117
  @arguments[:http] ||= {}
113
- @arguments[:enable_meta_header] = arguments.fetch(:enable_meta_header) { true }
114
- @options[:http] ||= {}
115
-
116
- set_api_key if (@api_key = @arguments[:api_key])
117
-
118
+ @options[:http] ||= {}
118
119
 
119
- @seeds ||= __extract_hosts(@arguments[:hosts] ||
120
+ @seeds = __extract_hosts(@arguments[:hosts] ||
120
121
  @arguments[:host] ||
121
122
  @arguments[:url] ||
122
123
  @arguments[:urls] ||
@@ -124,10 +125,9 @@ module Elasticsearch
124
125
  DEFAULT_HOST)
125
126
 
126
127
  @send_get_body_as = @arguments[:send_get_body_as] || 'GET'
127
- @opaque_id_prefix = @arguments[:opaque_id_prefix] || nil
128
128
 
129
129
  if @arguments[:request_timeout]
130
- @arguments[:transport_options][:request] = { timeout: @arguments[:request_timeout] }
130
+ @arguments[:transport_options][:request] = { :timeout => @arguments[:request_timeout] }
131
131
  end
132
132
 
133
133
  @arguments[:transport_options][:headers] ||= {}
@@ -139,120 +139,29 @@ module Elasticsearch
139
139
  if @arguments[:transport]
140
140
  @transport = @arguments[:transport]
141
141
  else
142
- @transport_class = @arguments[:transport_class] || DEFAULT_TRANSPORT_CLASS
143
- @transport = if @transport_class == Transport::HTTP::Faraday
144
- @arguments[:adapter] ||= __auto_detect_adapter
145
- set_meta_header
146
- @transport_class.new(hosts: @seeds, options: @arguments) do |faraday|
147
- faraday.adapter(@arguments[:adapter])
148
- block&.call faraday
149
- end
150
- else
151
- set_meta_header
152
- @transport_class.new(hosts: @seeds, options: @arguments)
153
- end
142
+ transport_class = @arguments[:transport_class] || DEFAULT_TRANSPORT_CLASS
143
+ if transport_class == Transport::HTTP::Faraday
144
+ @transport = transport_class.new(:hosts => @seeds, :options => @arguments) do |faraday|
145
+ block.call faraday if block
146
+ unless (h = faraday.builder.handlers.last) && h.name.start_with?("Faraday::Adapter")
147
+ faraday.adapter(@arguments[:adapter] || __auto_detect_adapter)
148
+ end
149
+ end
150
+ else
151
+ @transport = transport_class.new(:hosts => @seeds, :options => @arguments)
152
+ end
154
153
  end
155
154
  end
156
155
 
157
156
  # Performs a request through delegation to {#transport}.
158
157
  #
159
- def perform_request(method, path, params = {}, body = nil, headers = nil)
158
+ def perform_request(method, path, params={}, body=nil, headers=nil)
160
159
  method = @send_get_body_as if 'GET' == method && body
161
- if (opaque_id = params.delete(:opaque_id))
162
- headers = {} if headers.nil?
163
- opaque_id = @opaque_id_prefix ? "#{@opaque_id_prefix}#{opaque_id}" : opaque_id
164
- headers.merge!('X-Opaque-Id' => opaque_id)
165
- end
166
160
  transport.perform_request(method, path, params, body, headers)
167
161
  end
168
162
 
169
163
  private
170
164
 
171
- def set_api_key
172
- @api_key = __encode(@api_key) if @api_key.is_a? Hash
173
- add_header('Authorization' => "ApiKey #{@api_key}")
174
- @arguments.delete(:user)
175
- @arguments.delete(:password)
176
- end
177
-
178
- def add_header(header)
179
- headers = @arguments[:transport_options]&.[](:headers) || {}
180
- headers.merge!(header)
181
- @arguments[:transport_options].merge!(
182
- headers: headers
183
- )
184
- end
185
-
186
- def set_meta_header
187
- return if @arguments[:enable_meta_header] == false
188
-
189
- service, version = meta_header_service_version
190
-
191
- meta_headers = {
192
- service.to_sym => version,
193
- rb: RUBY_VERSION,
194
- t: Elasticsearch::Transport::VERSION
195
- }
196
- meta_headers.merge!(meta_header_engine) if meta_header_engine
197
- meta_headers.merge!(meta_header_adapter) if meta_header_adapter
198
-
199
- add_header({ 'x-elastic-client-meta' => meta_headers.map { |k, v| "#{k}=#{v}" }.join(',') })
200
- end
201
-
202
- def meta_header_service_version
203
- if defined?(Elastic::META_HEADER_SERVICE_VERSION)
204
- Elastic::META_HEADER_SERVICE_VERSION
205
- elsif defined?(Elasticsearch::VERSION)
206
- [:es, client_meta_version(Elasticsearch::VERSION)]
207
- else
208
- [:es, client_meta_version(Elasticsearch::Transport::VERSION)]
209
- end
210
- end
211
-
212
- def client_meta_version(version)
213
- regexp = /^([0-9]+\.[0-9]+\.[0-9]+)(\.?[a-z0-9.-]+)?$/
214
- match = version.match(regexp)
215
- return "#{match[1]}p" if (match[2])
216
-
217
- version
218
- end
219
-
220
- def meta_header_engine
221
- case RUBY_ENGINE
222
- when 'ruby'
223
- {}
224
- when 'jruby'
225
- { jv: ENV_JAVA['java.version'], jr: JRUBY_VERSION }
226
- when 'rbx'
227
- { rbx: RUBY_VERSION }
228
- else
229
- { RUBY_ENGINE.to_sym => RUBY_VERSION }
230
- end
231
- end
232
-
233
- def meta_header_adapter
234
- if @transport_class == Transport::HTTP::Faraday
235
- {fd: Faraday::VERSION}.merge(
236
- case @arguments[:adapter]
237
- when :patron
238
- {pt: Patron::VERSION}
239
- when :net_http
240
- {nh: defined?(Net::HTTP::VERSION) ? Net::HTTP::VERSION : Net::HTTP::HTTPVersion}
241
- when :typhoeus
242
- {ty: Typhoeus::VERSION}
243
- when :httpclient
244
- {hc: HTTPClient::VERSION}
245
- when :net_http_persistent
246
- {np: Net::HTTP::Persistent::VERSION}
247
- end
248
- )
249
- elsif defined?(Transport::HTTP::Curb) && @transport_class == Transport::HTTP::Curb
250
- {cl: Curl::CURB_VERSION}
251
- elsif defined?(Transport::HTTP::Manticore) && @transport_class == Transport::HTTP::Manticore
252
- {mc: Manticore::VERSION}
253
- end
254
- end
255
-
256
165
  # Normalizes and returns hosts configuration.
257
166
  #
258
167
  # Arrayifies the `hosts_config` argument and extracts `host` and `port` info from strings.
@@ -267,15 +176,15 @@ module Elasticsearch
267
176
  #
268
177
  def __extract_hosts(hosts_config)
269
178
  hosts = case hosts_config
270
- when String
271
- hosts_config.split(',').map { |h| h.strip! || h }
272
- when Array
273
- hosts_config
274
- when Hash, URI
275
- [ hosts_config ]
276
- else
277
- Array(hosts_config)
278
- end
179
+ when String
180
+ hosts_config.split(',').map { |h| h.strip! || h }
181
+ when Array
182
+ hosts_config
183
+ when Hash, URI
184
+ [ hosts_config ]
185
+ else
186
+ Array(hosts_config)
187
+ end
279
188
 
280
189
  host_list = hosts.map { |host| __parse_host(host) }
281
190
  @options[:randomize_hosts] ? host_list.shuffle! : host_list
@@ -283,42 +192,36 @@ module Elasticsearch
283
192
 
284
193
  def __parse_host(host)
285
194
  host_parts = case host
286
- when String
287
- if host =~ /^[a-z]+\:\/\//
288
- uri = URI.parse(host)
289
- { :scheme => uri.scheme,
290
- :user => uri.user,
291
- :password => uri.password,
292
- :host => uri.host,
293
- :path => uri.path,
294
- :port => uri.port }
295
- else
296
- host, port = host.split(':')
297
- { :host => host,
298
- :port => port }
299
- end
300
- when URI
301
- { :scheme => host.scheme,
302
- :user => host.user,
303
- :password => host.password,
304
- :host => host.host,
305
- :path => host.path,
306
- :port => host.port }
307
- when Hash
308
- host
309
- else
310
- raise ArgumentError, "Please pass host as a String, URI or Hash -- #{host.class} given."
311
- end
312
-
313
- if @api_key
314
- # Remove Basic Auth if using API KEY
315
- host_parts.delete(:user)
316
- host_parts.delete(:password)
195
+ when String
196
+ if host =~ /^[a-z]+\:\/\//
197
+ uri = URI.parse(host)
198
+ { :scheme => uri.scheme,
199
+ :user => uri.user,
200
+ :password => uri.password,
201
+ :host => uri.host,
202
+ :path => uri.path,
203
+ :port => uri.port }
204
+ else
205
+ host, port = host.split(':')
206
+ { :host => host,
207
+ :port => port }
208
+ end
209
+ when URI
210
+ { :scheme => host.scheme,
211
+ :user => host.user,
212
+ :password => host.password,
213
+ :host => host.host,
214
+ :path => host.path,
215
+ :port => host.port }
216
+ when Hash
217
+ host
317
218
  else
318
- @options[:http][:user] ||= host_parts[:user]
319
- @options[:http][:password] ||= host_parts[:password]
219
+ raise ArgumentError, "Please pass host as a String, URI or Hash -- #{host.class} given."
320
220
  end
321
221
 
222
+ @options[:http][:user] ||= host_parts[:user]
223
+ @options[:http][:password] ||= host_parts[:password]
224
+
322
225
  host_parts[:port] = host_parts[:port].to_i if host_parts[:port]
323
226
  host_parts[:path].chomp!('/') if host_parts[:path]
324
227
  host_parts
@@ -346,13 +249,6 @@ module Elasticsearch
346
249
  ::Faraday.default_adapter
347
250
  end
348
251
  end
349
-
350
- # Encode credentials for the Authorization Header
351
- # Credentials is the base64 encoding of id and api_key joined by a colon
352
- # @see https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-create-api-key.html
353
- def __encode(api_key)
354
- Base64.strict_encode64([api_key[:id], api_key[:api_key]].join(':'))
355
- end
356
252
  end
357
253
  end
358
254
  end