1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
|
module Samuel
module DriverPatches
module NetHTTP
def self.included(klass)
methods_to_wrap = %w(request connect)
methods_to_wrap.each do |method|
klass.send(:alias_method, "#{method}_without_samuel", method)
klass.send(:alias_method, method, "#{method}_with_samuel")
end
end
def request_with_samuel(request, body = nil, &block)
response, exception_raised = nil, false
request_time = Samuel::Diary.current_time
begin
response = request_without_samuel(request, body, &block)
rescue Exception => response
exception_raised = true
end
Samuel::Diary.record_request(self, request, request_time)
Samuel::Diary.record_response(self, request, response)
raise response if exception_raised
response
end
def connect_with_samuel
connect_without_samuel
rescue Exception => response
fake_request = Object.new
def fake_request.path; ""; end
def fake_request.method; "CONNECT"; end
Samuel::Diary.record_request(self, fake_request)
Samuel::Diary.record_response(self, fake_request, response)
raise
end
end
end
end
|