Class: AWS::Core::Http::NetHttpHandler

Inherits:
Object
  • Object
show all
Defined in:
lib/aws/core/http/net_http_handler.rb

Overview

NetHttpHandler

This is the default HTTP handler for the aws-sdk gem. It uses Ruby’s Net::HTTP to make requests. It uses persistent connections and a connection pool.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ NetHttpHandler



29
30
31
# File 'lib/aws/core/http/net_http_handler.rb', line 29

def initialize options = {}
  @pool = Net::HTTP::ConnectionPool.new(options)
end

Instance Attribute Details

#poolNet::HTTP::ConnectionPool (readonly)



34
35
36
# File 'lib/aws/core/http/net_http_handler.rb', line 34

def pool
  @pool
end

Instance Method Details

#handle(request, response) ⇒ nil

Given a populated request object and an empty response object, this method will make the request and them populate the response.



42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/aws/core/http/net_http_handler.rb', line 42

def handle request, response

  options = {}
  options[:port] = request.port
  options[:ssl] = request.use_ssl?
  options[:proxy_uri] = request.proxy_uri
  options[:ssl_verify_peer] = request.ssl_verify_peer?
  options[:ssl_ca_file] = request.ssl_ca_file if request.ssl_ca_file
  options[:ssl_ca_path] = request.ssl_ca_path if request.ssl_ca_path

  connection = pool.connection_for(request.host, options)
  connection.read_timeout = request.read_timeout

  begin
    http_response = connection.request(build_net_http_request(request))
    response.body = http_response.body
    response.status = http_response.code.to_i
    response.headers = http_response.to_hash
  rescue Timeout::Error, Errno::ETIMEDOUT => e
    response.timeout = true
  end
  nil

end