class OpenSearch::Transport::Transport::HTTP::Faraday

The default transport implementation, using the [Faraday](rubygems.org/gems/faraday) library for abstracting the HTTP client.

@see Transport::Base

Public Instance Methods

__build_connection(host, options={}, block=nil) click to toggle source

Builds and returns a connection

@return [Connections::Connection]

# File lib/opensearch/transport/transport/http/faraday.rb, line 71
def __build_connection(host, options={}, block=nil)
  client = ::Faraday.new(__full_url(host), options, &block)
  apply_headers(client, options)
  Connections::Connection.new :host => host, :connection => client
end
host_unreachable_exceptions() click to toggle source

Returns an array of implementation specific connection errors.

@return [Array]

# File lib/opensearch/transport/transport/http/faraday.rb, line 81
def host_unreachable_exceptions
  [::Faraday::ConnectionFailed, ::Faraday::TimeoutError]
end
perform_request(method, path, params = {}, body = nil, headers = nil, opts = {}) click to toggle source

Performs the request by invoking {Transport::Base#perform_request} with a block.

@return [Response] @see Transport::Base#perform_request

# File lib/opensearch/transport/transport/http/faraday.rb, line 44
def perform_request(method, path, params = {}, body = nil, headers = nil, opts = {})
  super do |connection, url|
    headers = if connection.connection.headers
                if !headers.nil?
                  connection.connection.headers.merge(headers)
                else
                  connection.connection.headers
                end
              else
                headers
              end

    response = connection.connection.run_request(
      method.downcase.to_sym,
      url,
      (body ? __convert_to_json(body) : nil),
      headers
    )

    Response.new response.status, decompress_response(response.body), response.headers
  end
end

Private Instance Methods

user_agent_header(client) click to toggle source
# File lib/opensearch/transport/transport/http/faraday.rb, line 87
def user_agent_header(client)
  @user_agent ||= begin
    meta = ["RUBY_VERSION: #{RUBY_VERSION}"]
    if RbConfig::CONFIG && RbConfig::CONFIG['host_os']
      meta << "#{RbConfig::CONFIG['host_os'].split('_').first[/[a-z]+/i].downcase} #{RbConfig::CONFIG['target_cpu']}"
    end
    meta << "#{client.headers[USER_AGENT_STR]}"
    "opensearch-ruby/#{VERSION} (#{meta.join('; ')})"
  end
end