69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
|
# 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"
= Hash[req..to_a]
request_tracker = ::Nsa::NetHttpTracker.new(
protocol, @address, @port, req.path, req.method, ,
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..to_a]
)
request_tracker.response_body = response_body
response
end
|