module Faraday::Adapter::EMHttp::Options

def configure_compression(options, env)

Reads out compression header settings from env into options
def configure_compression(options, env)
  return unless (env[:method] == :get) &&
                !options[:head].key?('accept-encoding')
  options[:head]['accept-encoding'] = 'gzip, compressed'
end

def configure_proxy(options, env)

Reads out proxy settings from env into options
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

def configure_socket(options, env)

Reads out host and port settings from env into options
def configure_socket(options, env)
  bind = request_options(env)[:bind]
  return unless bind
  options[:bind] = {
    host: bind[:host],
    port: bind[:port]
  }
end

def configure_ssl(options, env)

Reads out SSL certificate settings from env into options
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

def configure_timeout(options, env)

Reads out timeout settings from env into options
def configure_timeout(options, env)
  req = request_options(env)
  options[:inactivity_timeout] = request_timeout(:read, req)
  options[:connect_timeout] = request_timeout(:open, req)
end

def connection_config(env)

Returns:
  • (Hash) -
def connection_config(env)
  options = {}
  configure_proxy(options, env)
  configure_timeout(options, env)
  configure_socket(options, env)
  configure_ssl(options, env)
  options
end

def read_body(env)

def read_body(env)
  body = env[:body]
  body.respond_to?(:read) ? body.read : body
end

def request_config(env)

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

def request_options(env)

def request_options(env)
  env[:request]
end