module Faraday::Adapter::EMHttp::Options

Options is a module containing helpers to convert the Faraday env object into options hashes for EMHTTP method calls.

Public Instance Methods

configure_compression(options, env) click to toggle source

Reads out compression header settings from env into options

# File lib/faraday/adapter/em_http.rb, line 79
def configure_compression(options, env)
  return unless (env[:method] == :get) &&
    !options[:head].key?('accept-encoding')

  options[:head]['accept-encoding'] = 'gzip, compressed'
end
configure_proxy(options, env) click to toggle source

Reads out proxy settings from env into options

# File lib/faraday/adapter/em_http.rb, line 39
def configure_proxy(options, env)
  proxy = request_options(env)[:proxy]
  return unless proxy

  options[:proxy] = {
    host: proxy[:uri].host,
    port: proxy[:uri].port,
    authorization: [proxy[:user], proxy[:password]]
  }
end
configure_socket(options, env) click to toggle source

Reads out host and port settings from env into options

# File lib/faraday/adapter/em_http.rb, line 51
def configure_socket(options, env)
  bind = request_options(env)[:bind]
  return unless bind

  options[:bind] = {
    host: bind[:host],
    port: bind[:port]
  }
end
configure_ssl(options, env) click to toggle source

Reads out SSL certificate settings from env into options

# File lib/faraday/adapter/em_http.rb, line 62
def configure_ssl(options, env)
  return unless env[:url].scheme == 'https' && env[:ssl]

  options[:ssl] = {
    cert_chain_file: env[:ssl][:ca_file],
    verify_peer: env[:ssl].fetch(:verify, true)
  }
end
configure_timeout(options, env) click to toggle source

Reads out timeout settings from env into options

# File lib/faraday/adapter/em_http.rb, line 72
def configure_timeout(options, env)
  req = request_options(env)
  options[:inactivity_timeout] = request_timeout(:read, req)
  options[:connect_timeout] = request_timeout(:open, req)
end
connection_config(env) click to toggle source

@return [Hash]

# File lib/faraday/adapter/em_http.rb, line 13
def connection_config(env)
  options = {}
  configure_proxy(options, env)
  configure_timeout(options, env)
  configure_socket(options, env)
  configure_ssl(options, env)
  options
end
read_body(env) click to toggle source
# File lib/faraday/adapter/em_http.rb, line 33
def read_body(env)
  body = env[:body]
  body.respond_to?(:read) ? body.read : body
end
request_config(env) click to toggle source
# File lib/faraday/adapter/em_http.rb, line 22
def request_config(env)
  options = {
    body: read_body(env),
    head: env[:request_headers]
    # keepalive: true,
    # file: 'path/to/file', # stream data off disk
  }
  configure_compression(options, env)
  options
end
request_options(env) click to toggle source
# File lib/faraday/adapter/em_http.rb, line 86
def request_options(env)
  env[:request]
end