class Net::HTTP

Public Instance Methods

orig_request(req, request_body = nil, &block)
Alias for: request
request(req, request_body = nil, &block) click to toggle source
# File lib/nsa/net_http_tracker.rb, line 69
def request(req, request_body = nil, &block)
  return orig_request(req, request_body, &block) unless started?
  protocol = use_ssl? ? "https" : "http"
  request_headers = Hash[req.each_header.to_a]
  request_tracker = ::Nsa::NetHttpTracker.new(
    protocol, @address, @port, req.path, req.method, request_headers,
    request_body || req.body
  )

  response_body = ""
  block_provided = block_given?
  response = orig_request(req, request_body) do |resp|
    resp.read_body { |str| response_body << str }
    resp.define_singleton_method(:read_body) do |dest = nil, &block|
      dest << response_body unless dest.nil?
      block.call(response_body) unless block.nil?
      response_body
    end
    block.call(resp) if block_provided
  end

  request_tracker.set_response_info(
    response.code, response.message, Hash[response.each_header.to_a]
  )
  request_tracker.response_body = response_body
  response
end
Also aliased as: orig_request