37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
# File 'lib/fake_web/ext/net_http.rb', line 37
def request(request, body = nil, &block)
protocol = use_ssl? ? "https" : "http"
path = request.path
path = URI.parse(request.path).request_uri if request.path =~ /^http/
if request["authorization"] =~ /^Basic /
userinfo = FakeWeb::Utility.(request["authorization"])
userinfo = FakeWeb::Utility.encode_unsafe_chars_in_userinfo(userinfo) + "@"
else
userinfo = ""
end
uri = "#{protocol}://#{userinfo}#{self.address}:#{self.port}#{path}"
method = request.method.downcase.to_sym
if FakeWeb.registered_uri?(method, uri)
@socket = Net::HTTP.socket_type.new
FakeWeb.response_for(method, uri, &block)
elsif FakeWeb.allow_net_connect?
connect_without_fakeweb
response = request_without_fakeweb(request, body, &block)
if path = FakeWeb.generate_fixtures?
fixture_response = block_given? ? request_without_fakeweb(request, body) : response
FakeWeb::Fixture.new(path, method, uri, fixture_response).save
end
response
else
uri = FakeWeb::Utility.strip_default_port_from_uri(uri)
raise FakeWeb::NetConnectNotAllowedError,
"Real HTTP connections are disabled. Unregistered request: #{request.method} #{uri}"
end
end
|