Class: AWS::Core::Http::NetHttpHandler
- Inherits:
-
Object
- Object
- AWS::Core::Http::NetHttpHandler
- 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
- #pool ⇒ Net::HTTP::ConnectionPool readonly
Instance Method Summary collapse
-
#handle(request, response, &read_block) ⇒ nil
Given a populated request object and an empty response object, this method will make the request and them populate the response.
-
#initialize(options = {}) ⇒ NetHttpHandler
constructor
A new instance of NetHttpHandler.
Constructor Details
#initialize(options = {}) ⇒ NetHttpHandler
Returns a new instance of NetHttpHandler.
38 39 40 |
# File 'lib/aws/core/http/net_http_handler.rb', line 38 def initialize = {} @pool = Net::HTTP::ConnectionPool.new() end |
Instance Attribute Details
#pool ⇒ Net::HTTP::ConnectionPool (readonly)
43 44 45 |
# File 'lib/aws/core/http/net_http_handler.rb', line 43 def pool @pool end |
Instance Method Details
#handle(request, response, &read_block) ⇒ nil
Given a populated request object and an empty response object, this method will make the request and them populate the response.
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
# File 'lib/aws/core/http/net_http_handler.rb', line 51 def handle request, response, &read_block = {} [:port] = request.port [:ssl] = request.use_ssl? [:proxy_uri] = request.proxy_uri [:ssl_verify_peer] = request.ssl_verify_peer? [:ssl_ca_file] = request.ssl_ca_file if request.ssl_ca_file [:ssl_ca_path] = request.ssl_ca_path if request.ssl_ca_path begin connection = pool.connection_for(request.host, ) connection.read_timeout = request.read_timeout connection.request(build_net_http_request(request)) do |http_resp| response.status = http_resp.code.to_i response.headers = http_resp.to_hash if block_given? and response.status < 300 http_resp.read_body(&read_block) else response.body = http_resp.read_body end end # The first rescue clause is required because Timeout::Error is # a SignalException (in Ruby 1.8, not 1.9). Generally, SingalExceptions # should not be retried, except for timeout errors. rescue Timeout::Error => error response.network_error = error rescue *PASS_THROUGH_ERRORS => error raise error rescue Exception => error response.network_error = error end nil end |