@@ -45,40 +45,50 @@ def method_missing(name, *args, &block)
45
45
46
46
def verify_elasticsearch
47
47
begin
48
- response = @transport . perform_request ( 'GET' , '/' )
48
+ response = elasticsearch_validation_request
49
49
rescue Elasticsearch ::Transport ::Transport ::Errors ::Unauthorized ,
50
50
Elasticsearch ::Transport ::Transport ::Errors ::Forbidden
51
51
@verified = true
52
52
warn ( SECURITY_PRIVILEGES_VALIDATION_WARNING )
53
53
return
54
54
end
55
55
56
- verify_with_version_or_header ( response )
56
+ body = if response . headers [ 'content-type' ] == 'application/yaml'
57
+ require 'yaml'
58
+ YAML . load ( response . body )
59
+ else
60
+ response . body
61
+ end
62
+ version = body . dig ( 'version' , 'number' )
63
+ verify_with_version_or_header ( body , version , response . headers )
57
64
end
58
65
59
- def verify_with_version_or_header ( response )
60
- version = response . body . dig ( 'version' , 'number' )
66
+ def verify_with_version_or_header ( body , version , headers )
61
67
raise Elasticsearch ::NotElasticsearchError if version . nil? || version < '6.0.0'
62
68
63
69
if version == '7.x-SNAPSHOT' || Gem ::Version . new ( version ) >= Gem ::Version . new ( '7.14-SNAPSHOT' )
64
- raise Elasticsearch ::NotElasticsearchError unless response . headers [ 'x-elastic-product' ] == 'Elasticsearch'
70
+ raise Elasticsearch ::NotElasticsearchError unless headers [ 'x-elastic-product' ] == 'Elasticsearch'
65
71
66
72
@verified = true
67
73
elsif Gem ::Version . new ( version ) > Gem ::Version . new ( '6.0.0' ) &&
68
- Gem ::Version . new ( version ) < Gem ::Version . new ( '7.0.0' )
74
+ Gem ::Version . new ( version ) < Gem ::Version . new ( '7.0.0' )
69
75
raise Elasticsearch ::NotElasticsearchError unless
70
- response . body . dig ( 'version' , 'tagline' ) == YOU_KNOW_FOR_SEARCH
76
+ body . dig ( 'version' , 'tagline' ) == YOU_KNOW_FOR_SEARCH
71
77
72
78
@verified = true
73
79
elsif Gem ::Version . new ( version ) >= Gem ::Version . new ( '7.0.0' ) &&
74
80
Gem ::Version . new ( version ) < Gem ::Version . new ( '7.14-SNAPSHOT' )
75
81
raise Elasticsearch ::NotElasticsearchError unless
76
- response . body . dig ( 'version' , 'tagline' ) == YOU_KNOW_FOR_SEARCH &&
77
- response . body . dig ( 'version' , 'build_flavor' ) == 'default'
82
+ body . dig ( 'version' , 'tagline' ) == YOU_KNOW_FOR_SEARCH &&
83
+ body . dig ( 'version' , 'build_flavor' ) == 'default'
78
84
79
85
@verified = true
80
86
end
81
87
end
88
+
89
+ def elasticsearch_validation_request
90
+ @transport . perform_request ( 'GET' , '/' )
91
+ end
82
92
end
83
93
84
94
class NotElasticsearchError < StandardError
0 commit comments