initialize

in lib/elastic/transport/client.rb [123:165]


      def initialize(arguments = {}, &block)
        @arguments = arguments.transform_keys(&:to_sym)
        @arguments[:logger] ||= @arguments[:log]   ? DEFAULT_LOGGER.call : nil
        @arguments[:tracer] ||= @arguments[:trace] ? DEFAULT_TRACER.call : nil
        @arguments[:reload_connections] ||= false
        @arguments[:retry_on_failure]   ||= false
        @arguments[:delay_on_retry]     ||= 0
        @arguments[:reload_on_failure]  ||= false
        @arguments[:randomize_hosts]    ||= false
        @arguments[:transport_options]  ||= {}
        @arguments[:http]               ||= {}
        @arguments[:enable_meta_header] = arguments.fetch(:enable_meta_header, true)

        @hosts ||= extract_hosts
        @send_get_body_as = @arguments[:send_get_body_as] || 'GET'
        @ca_fingerprint = @arguments.delete(:ca_fingerprint)

        if @arguments[:request_timeout]
          @arguments[:transport_options][:request] = { timeout: @arguments[:request_timeout] }
        end

        if @arguments[:transport]
          @transport = @arguments[:transport]
        else
          @transport_class = @arguments[:transport_class] || DEFAULT_TRANSPORT_CLASS
          @transport = if @transport_class == Transport::HTTP::Faraday
                         @arguments[:adapter] ||= auto_detect_adapter
                         set_meta_header 
                         @transport_class.new(hosts: @hosts, options: @arguments) do |faraday|
                           faraday.adapter(@arguments[:adapter])
                           block&.call faraday
                         end
                       else
                         set_meta_header 
                         @transport_class.new(hosts: @hosts, options: @arguments)
                       end
        end

        if defined?(::OpenTelemetry) && ENV[OpenTelemetry::ENV_VARIABLE_ENABLED] != 'false'
          @otel = OpenTelemetry.new(@arguments)
        end
      end