Class: Faraday::Adapter::HTTPClient

### Home Classes Methods

### In Files

- lib/faraday/adapter/httpclient.rb

### Parent

Faraday::Adapter

### Methods

- #call
- #client
- #configure_proxy
- #configure_socket
- #configure_ssl
- #configure_timeouts
- #ssl_verify_mode

### Class/Module Index

Quicksearch

- Faraday
- Faraday::Adapter
- Faraday::Adapter::EMHttp
- Faraday::Adapter::EMHttp::Manager
- Faraday::Adapter::EMHttp::Options
- Faraday::Adapter::EMSynchrony
- Faraday::Adapter::EMSynchrony::ParallelManager
- Faraday::Adapter::Excon
- Faraday::Adapter::HTTPClient
- Faraday::Adapter::NetHttp
- Faraday::Adapter::NetHttpPersistent
- Faraday::Adapter::Parallelism
- Faraday::Adapter::Patron
- Faraday::Adapter::Rack
- Faraday::Adapter::Test
- Faraday::Adapter::Test::Stub
- Faraday::Adapter::Test::Stubs
- Faraday::Adapter::Test::Stubs::NotFound
- Faraday::Adapter::Typhoeus
- Faraday::AutoloadHelper
- Faraday::ClientError
- Faraday::CompositeReadIO
- Faraday::Connection
- Faraday::ConnectionFailed
- Faraday::ConnectionOptions
- Faraday::Env
- Faraday::Error
- Faraday::FlatParamsEncoder
- Faraday::Middleware
- Faraday::MiddlewareRegistry
- Faraday::MissingDependency
- Faraday::NestedParamsEncoder
- Faraday::Options
- Faraday::ParsingError
- Faraday::ProxyOptions
- Faraday::RackBuilder
- Faraday::RackBuilder::Handler
- Faraday::RackBuilder::StackLocked
- Faraday::Request
- Faraday::Request::Authorization
- Faraday::Request::BasicAuthentication
- Faraday::Request::Instrumentation
- Faraday::Request::Instrumentation::Options
- Faraday::Request::Multipart
- Faraday::Request::Retry
- Faraday::Request::Retry::Options
- Faraday::Request::TokenAuthentication
- Faraday::Request::UrlEncoded
- Faraday::RequestOptions
- Faraday::ResourceNotFound
- Faraday::Response
- Faraday::Response::Logger
- Faraday::Response::Middleware
- Faraday::Response::RaiseError
- Faraday::SSLError
- Faraday::SSLOptions
- Faraday::TimeoutError
- Faraday::Utils
- Faraday::Utils::Headers
- Faraday::Utils::ParamsHash
- EmHttpSslPatch
- Object

No matching classes.

# Faraday::Adapter::HTTPClient

### Public Instance Methods

call(env) click to toggle source

    # File lib/faraday/adapter/httpclient.rb, line 10
    def call(env)
      super

      if req = env[:request]
        if proxy = req[:proxy]
          configure_proxy proxy
        end

        if bind = req[:bind]
          configure_socket bind
        end

        configure_timeouts req
      end

      if env[:url].scheme == 'https' && ssl = env[:ssl]
        configure_ssl ssl
      end

      # TODO Don't stream yet.
      # https://github.com/nahi/httpclient/pull/90
      env[:body] = env[:body].read if env[:body].respond_to? :read

      resp = client.request env[:method], env[:url],
        :body   => env[:body],
        :header => env[:request_headers]

      save_response env, resp.status, resp.body, resp.headers

      @app.call env
    rescue ::HTTPClient::TimeoutError
      raise Faraday::Error::TimeoutError, $!
    rescue ::HTTPClient::BadResponseError => err
      if err.message.include?('status 407')
        raise Faraday::Error::ConnectionFailed, %{407 "Proxy Authentication Required "}
      else
        raise Faraday::Error::ClientError, $!
      end
    rescue Errno::ECONNREFUSED, EOFError
      raise Faraday::Error::ConnectionFailed, $!
    rescue => err
      if defined?(OpenSSL) && OpenSSL::SSL::SSLError === err
        raise Faraday::SSLError, err
      else
        raise
      end
    end

client() click to toggle source

    # File lib/faraday/adapter/httpclient.rb, line 6
    def client
      @client ||= ::HTTPClient.new
    end

configure_proxy(proxy) click to toggle source

    # File lib/faraday/adapter/httpclient.rb, line 63
    def configure_proxy(proxy)
      client.proxy = proxy[:uri]
      if proxy[:user] && proxy[:password]
        client.set_proxy_auth proxy[:user], proxy[:password]
      end
    end

configure_socket(bind) click to toggle source

    # File lib/faraday/adapter/httpclient.rb, line 58
    def configure_socket(bind)
      client.socket_local.host = bind[:host]
      client.socket_local.port = bind[:port]
    end

configure_ssl(ssl) click to toggle source

    # File lib/faraday/adapter/httpclient.rb, line 70
    def configure_ssl(ssl)
      ssl_config = client.ssl_config

      ssl_config.add_trust_ca ssl[:ca_file]        if ssl[:ca_file]
      ssl_config.add_trust_ca ssl[:ca_path]        if ssl[:ca_path]
      ssl_config.cert_store   = ssl[:cert_store]   if ssl[:cert_store]
      ssl_config.client_cert  = ssl[:client_cert]  if ssl[:client_cert]
      ssl_config.client_key   = ssl[:client_key]   if ssl[:client_key]
      ssl_config.verify_depth = ssl[:verify_depth] if ssl[:verify_depth]
      ssl_config.verify_mode  = ssl_verify_mode(ssl)
    end

configure_timeouts(req) click to toggle source

    # File lib/faraday/adapter/httpclient.rb, line 82
    def configure_timeouts(req)
      if req[:timeout]
        client.connect_timeout   = req[:timeout]
        client.receive_timeout   = req[:timeout]
        client.send_timeout      = req[:timeout]
      end

      if req[:open_timeout]
        client.connect_timeout   = req[:open_timeout]
        client.send_timeout      = req[:open_timeout]
      end
    end

ssl_verify_mode(ssl) click to toggle source

    # File lib/faraday/adapter/httpclient.rb, line 95
    def ssl_verify_mode(ssl)
      ssl[:verify_mode] || begin
        if ssl.fetch(:verify, true)
          OpenSSL::SSL::VERIFY_PEER | OpenSSL::SSL::VERIFY_FAIL_IF_NO_PEER_CERT
        else
          OpenSSL::SSL::VERIFY_NONE
        end
      end
    end

[Validate]

Generated with the Darkfish Rdoc Generator 2.