# File lib/aws/core/http/httparty_handler.rb, line 58
        def handle(request, response)
  
          opts = default_request_options.merge({
            :body => request.body,
            :parser => NoOpParser
          })
  
          if request.proxy_uri
            opts[:http_proxyaddr] = request.proxy_uri.host
            opts[:http_proxyport] = request.proxy_uri.port
          end
  
          if request.use_ssl?
            protocol = 'https'
            opts[:ssl_ca_file] = request.ssl_ca_file if request.ssl_verify_peer?
          else
            protocol = 'http'
          end

          url = "#{protocol}://#{request.host}:#{request.port}#{request.uri}"
  
          # get, post, put, delete, head
          method = request.http_method.downcase
  
          # Net::HTTP adds this header for us when the body is
          # provided, but it messes up signing
          headers = { 'content-type' => '' }
  
          # headers must have string values (net http calls .strip on them)
          request.headers.each_pair do |key,value|
            headers[key] = value.to_s
          end
  
          opts[:headers] = headers
  
          begin
            http_response = self.class.send(method, url, opts)
          rescue Timeout::Error, Errno::ETIMEDOUT => e
            response.timeout = true
          else
            response.body = http_response.body
            response.status = http_response.code.to_i
            response.headers = http_response.to_hash
          end
        end