elasticsearch-transport 7.17.0 → 7.17.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4fc7f318edc5730a123909637ce8cf74f32c4ddb2c9571e6744b4ad864e5c5d8
4
- data.tar.gz: 11549daa6e4586a272f01e64ae56c01a510a57687fc0a06ecec58b35906f21d3
3
+ metadata.gz: 6ea7420173cd55a8274cf0ca677e18c70b8b0dc03b953a18d6188b00d998ad4d
4
+ data.tar.gz: 5f4931be00b530844479f5fba66256f69039096d59e452d150743a609193f624
5
5
  SHA512:
6
- metadata.gz: f5ea6b69fcb79dc9502b057195ef71bd6f60aca21170cae677e92510f01091199391ac38ce081af54fb269fa1600aeee81b586565317eac3065ff308c177f703
7
- data.tar.gz: 9274659714937b8505a1a2252da28658900458982b3abe338838dbe8328e5408481351edb10623378a3e6f48cf8ca48a55a14f9739cc7e6e5650627b4a03a587
6
+ metadata.gz: 1c6a925f6e13374a1e8c7d8a314d55866602debd782717a4d052a5e076a59f0b4320a98e5ba0b9a0f0695dedceca770fa0d911ceff99485803382f51480bed20
7
+ data.tar.gz: 13e5515c79629637dd1a4e300de065f11f12a7a4027bb0f088e3af1eaaa789f652fa31485d70942af57cd6386217ef65c88936c8d9cf7bb9d5ad254f26500551
@@ -18,7 +18,6 @@
18
18
  module Elasticsearch
19
19
  module Transport
20
20
  module Transport
21
-
22
21
  # @abstract Module with common functionality for transport implementations.
23
22
  #
24
23
  module Base
@@ -431,7 +430,7 @@ module Elasticsearch
431
430
  end
432
431
 
433
432
  def find_value(hash, regex)
434
- key_value = hash.find { |k,v| k.to_s.downcase =~ regex }
433
+ key_value = hash.find { |k, _| k.to_s.downcase =~ regex }
435
434
  if key_value
436
435
  hash.delete(key_value[0])
437
436
  key_value[1]
@@ -62,14 +62,20 @@ module Elasticsearch
62
62
  class Manticore
63
63
  include Base
64
64
 
65
- def initialize(arguments={}, &block)
66
- @request_options = { headers: (arguments.dig(:transport_options, :headers) || {}) }
65
+ def initialize(arguments = {}, &block)
66
+ @request_options = {
67
+ headers: (
68
+ arguments.dig(:transport_options, :headers) ||
69
+ arguments.dig(:options, :transport_options, :headers) ||
70
+ {}
71
+ )
72
+ }
67
73
  @manticore = build_client(arguments[:options] || {})
68
74
  super(arguments, &block)
69
75
  end
70
76
 
71
77
  # Should just be run once at startup
72
- def build_client(options={})
78
+ def build_client(options = {})
73
79
  client_options = options[:transport_options] || {}
74
80
  client_options[:ssl] = options[:ssl] || {}
75
81
 
@@ -88,22 +94,22 @@ module Elasticsearch
88
94
 
89
95
  params[:body] = body if body
90
96
  params[:headers] = headers if headers
91
- params = params.merge @request_options
97
+ params = params.merge(@request_options)
92
98
  case method
93
- when "GET"
99
+ when 'GET'
94
100
  resp = connection.connection.get(url, params)
95
- when "HEAD"
101
+ when 'HEAD'
96
102
  resp = connection.connection.head(url, params)
97
- when "PUT"
103
+ when 'PUT'
98
104
  resp = connection.connection.put(url, params)
99
- when "POST"
105
+ when 'POST'
100
106
  resp = connection.connection.post(url, params)
101
- when "DELETE"
107
+ when 'DELETE'
102
108
  resp = connection.connection.delete(url, params)
103
109
  else
104
110
  raise ArgumentError.new "Method #{method} not supported"
105
111
  end
106
- Response.new resp.code, resp.read_body, resp.headers
112
+ Response.new(resp.code, resp.read_body, resp.headers)
107
113
  end
108
114
  end
109
115
 
@@ -113,23 +119,21 @@ module Elasticsearch
113
119
  # @return [Connections::Collection]
114
120
  #
115
121
  def __build_connections
116
- apply_headers(@request_options, options[:transport_options])
117
- apply_headers(@request_options, options)
122
+ apply_headers(options)
118
123
 
119
- Connections::Collection.new \
120
- :connections => hosts.map { |host|
121
- host[:protocol] = host[:scheme] || DEFAULT_PROTOCOL
122
- host[:port] ||= DEFAULT_PORT
124
+ Connections::Collection.new(
125
+ connections: hosts.map do |host|
126
+ host[:protocol] = host[:scheme] || DEFAULT_PROTOCOL
127
+ host[:port] ||= DEFAULT_PORT
123
128
 
124
129
  host.delete(:user) # auth is not supported here.
125
130
  host.delete(:password) # use the headers
126
131
 
127
- Connections::Connection.new \
128
- :host => host,
129
- :connection => @manticore
130
- },
131
- :selector_class => options[:selector_class],
132
- :selector => options[:selector]
132
+ Connections::Connection.new(host: host, connection: @manticore)
133
+ end,
134
+ selector_class: options[:selector_class],
135
+ selector: options[:selector]
136
+ )
133
137
  end
134
138
 
135
139
  # Closes all connections by marking them as dead
@@ -157,16 +161,16 @@ module Elasticsearch
157
161
 
158
162
  private
159
163
 
160
- def apply_headers(request_options, options)
161
- headers = options&.[](:headers) || {}
164
+ def apply_headers(options)
165
+ headers = options[:headers] || options.dig(:transport_options, :headers) || {}
162
166
  headers[CONTENT_TYPE_STR] = find_value(headers, CONTENT_TYPE_REGEX) || DEFAULT_CONTENT_TYPE
163
- headers[USER_AGENT_STR] = find_value(headers, USER_AGENT_REGEX) || user_agent_header
167
+ headers[USER_AGENT_STR] = find_value(headers, USER_AGENT_REGEX) || find_value(@request_options[:headers], USER_AGENT_REGEX) || user_agent_header
164
168
  headers[ACCEPT_ENCODING] = GZIP if use_compression?
165
- request_options[:headers].merge!(headers)
169
+ @request_options[:headers].merge!(headers)
166
170
  end
167
171
 
168
172
  def user_agent_header
169
- @user_agent ||= begin
173
+ @user_agent_header ||= begin
170
174
  meta = ["RUBY_VERSION: #{JRUBY_VERSION}"]
171
175
  if RbConfig::CONFIG && RbConfig::CONFIG['host_os']
172
176
  meta << "#{RbConfig::CONFIG['host_os'].split('_').first[/[a-z]+/i].downcase} #{RbConfig::CONFIG['target_cpu']}"
@@ -17,6 +17,6 @@
17
17
 
18
18
  module Elasticsearch
19
19
  module Transport
20
- VERSION = '7.17.0'.freeze
20
+ VERSION = '7.17.1'.freeze
21
21
  end
22
22
  end
@@ -206,29 +206,8 @@ if JRUBY
206
206
  }
207
207
 
208
208
  ::Manticore::Client.expects(:new).with(options)
209
- transport = Manticore.new hosts: [{ host: 'foobar', port: 1234 }], options: options
210
- end
211
-
212
- should 'allow custom headers' do
213
- transport_options = { headers: { 'Authorization' => 'Basic token' } }
214
- transport = Manticore.new(
215
- hosts: [{ host: 'foobar', port: 1234 }],
216
- transport_options: transport_options
217
- )
218
-
219
- assert_equal(
220
- transport.instance_variable_get(:@request_options)[:headers]['Authorization'],
221
- 'Basic token'
222
- )
223
- transport.connections.first.connection
224
- .expects(:get)
225
- .with do |_host, _options|
226
- assert_equal('Basic token', _options[:headers]['Authorization'])
227
- true
228
- end
229
- .returns(stub_everything)
230
-
231
- transport.perform_request('GET', '/', {})
209
+ transport = Manticore.new(hosts: [{ host: 'foobar', port: 1234 }], options: options)
210
+ assert_equal(transport.options[:ssl][:truststore_password], 'test')
232
211
  end
233
212
 
234
213
  should 'pass :transport_options to Manticore::Client' do
@@ -238,6 +217,45 @@ if JRUBY
238
217
 
239
218
  ::Manticore::Client.expects(:new).with(potatoes: 1, ssl: {})
240
219
  transport = Manticore.new(hosts: [{ host: 'foobar', port: 1234 }], options: options)
220
+ assert_equal(transport.options[:transport_options][:potatoes], 1)
221
+ end
222
+
223
+ context 'custom headers' do
224
+ should 'allow authorization headers' do
225
+ transport_options = { headers: { 'Authorization' => 'Basic token' } }
226
+ transport = Manticore.new(
227
+ hosts: [{ host: 'foobar', port: 1234 }],
228
+ transport_options: transport_options
229
+ )
230
+
231
+ assert_equal(
232
+ transport.instance_variable_get(:@request_options)[:headers]['Authorization'],
233
+ 'Basic token'
234
+ )
235
+ transport.connections.first.connection.expects(:get).with do |_host, options|
236
+ assert_equal('Basic token', options[:headers]['Authorization'])
237
+ true
238
+ end.returns(stub_everything)
239
+ transport.perform_request('GET', '/', {})
240
+ end
241
+
242
+ should 'allow user agent headers' do
243
+ transport_options = { headers: { 'User-Agent' => 'Custom UA' } }
244
+ transport = Manticore.new(
245
+ hosts: [{ host: 'localhost' }],
246
+ transport_options: transport_options
247
+ )
248
+ transport.connections.first.connection.expects(:get).with do |_host, options|
249
+ assert_equal('Custom UA', options[:headers]['User-Agent'])
250
+ true
251
+ end.returns(stub_everything)
252
+ transport.perform_request('GET', '/', {})
253
+
254
+ assert_equal(
255
+ transport.instance_variable_get('@request_options')[:headers]['User-Agent'],
256
+ 'Custom UA'
257
+ )
258
+ end
241
259
  end
242
260
  end
243
261
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: elasticsearch-transport
3
3
  version: !ruby/object:Gem::Version
4
- version: 7.17.0
4
+ version: 7.17.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Karel Minarik
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-02-01 00:00:00.000000000 Z
11
+ date: 2022-02-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: multi_json
@@ -433,7 +433,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
433
433
  - !ruby/object:Gem::Version
434
434
  version: '0'
435
435
  requirements: []
436
- rubygems_version: 3.1.6
436
+ rubygems_version: 3.3.3
437
437
  signing_key:
438
438
  specification_version: 4
439
439
  summary: Ruby client for Elasticsearch.