module Elasticsearch::Transport::MetaHeader
Methods for the Elastic meta header used by Cloud. X-Elastic-Client-Meta HTTP header which is used by Elastic Cloud and can be disabled when instantiating the Client
with the :enable_meta_header parameter set to ‘false`.
Public Instance Methods
called_from?(service)
click to toggle source
# File lib/elasticsearch/transport/meta_header.rb, line 65 def called_from?(service) !caller.select { |c| c.match?(service) }.empty? end
client_meta_version(version)
click to toggle source
We return the current version if it’s a release, but if it’s a pre/alpha/beta release we return <VERSION_NUMBER>p
# File lib/elasticsearch/transport/meta_header.rb, line 72 def client_meta_version(version) regexp = /^([0-9]+\.[0-9]+\.[0-9]+)(\.?[a-z0-9.-]+)?$/ match = version.match(regexp) return "#{match[1]}p" if (match[2]) version end
elasticsearch?()
click to toggle source
# File lib/elasticsearch/transport/meta_header.rb, line 60 def elasticsearch? defined?(Elastic::ELASTICSEARCH_SERVICE_VERSION) && called_from?('elasticsearch') end
enterprise_search?()
click to toggle source
# File lib/elasticsearch/transport/meta_header.rb, line 55 def enterprise_search? defined?(Elastic::ENTERPRISE_SERVICE_VERSION) && called_from?('enterprise-search-ruby') end
meta_header_adapter()
click to toggle source
This function tries to define the version for the Faraday adapter. If it hasn’t been loaded by the time we’re calling this method, it’s going to report the adapter (if we know it) but return 0 as the version. It won’t report anything when using a custom adapter we don’t identify.
Returns a Hash<adapter_alias, version>
# File lib/elasticsearch/transport/meta_header.rb, line 100 def meta_header_adapter if @transport_class == Transport::HTTP::Faraday version = '0' adapter_version = case @arguments[:adapter] when :patron version = Patron::VERSION if defined?(::Patron::VERSION) {pt: version} when :net_http version = if defined?(Net::HTTP::VERSION) Net::HTTP::VERSION elsif defined?(Net::HTTP::HTTPVersion) Net::HTTP::HTTPVersion end {nh: version} when :typhoeus version = Typhoeus::VERSION if defined?(::Typhoeus::VERSION) {ty: version} when :httpclient version = HTTPClient::VERSION if defined?(HTTPClient::VERSION) {hc: version} when :net_http_persistent version = Net::HTTP::Persistent::VERSION if defined?(Net::HTTP::Persistent::VERSION) {np: version} else {} end {fd: Faraday::VERSION}.merge(adapter_version) elsif defined?(Transport::HTTP::Curb) && @transport_class == Transport::HTTP::Curb {cl: Curl::CURB_VERSION} elsif defined?(Transport::HTTP::Manticore) && @transport_class == Transport::HTTP::Manticore {mc: Manticore::VERSION} end end
meta_header_engine()
click to toggle source
# File lib/elasticsearch/transport/meta_header.rb, line 80 def meta_header_engine case RUBY_ENGINE when 'ruby' {} when 'jruby' { jv: ENV_JAVA['java.version'], jr: JRUBY_VERSION } when 'rbx' { rbx: RUBY_VERSION } else { RUBY_ENGINE.to_sym => RUBY_VERSION } end end
meta_header_service_version()
click to toggle source
# File lib/elasticsearch/transport/meta_header.rb, line 43 def meta_header_service_version if enterprise_search? Elastic::ENTERPRISE_SERVICE_VERSION elsif elasticsearch? Elastic::ELASTICSEARCH_SERVICE_VERSION elsif defined?(Elasticsearch::VERSION) [:es, client_meta_version(Elasticsearch::VERSION)] else [:es, client_meta_version(Elasticsearch::Transport::VERSION)] end end
set_meta_header()
click to toggle source
# File lib/elasticsearch/transport/meta_header.rb, line 27 def set_meta_header return if @arguments[:enable_meta_header] == false service, version = meta_header_service_version meta_headers = { service.to_sym => version, rb: RUBY_VERSION, t: Elasticsearch::Transport::VERSION } meta_headers.merge!(meta_header_engine) if meta_header_engine meta_headers.merge!(meta_header_adapter) if meta_header_adapter add_header({ 'x-elastic-client-meta' => meta_headers.map { |k, v| "#{k}=#{v}" }.join(',') }) end