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
42
43
44
45
46
47
48
|
# File 'lib/soren/webmock.rb', line 9
def send(request)
return super unless request.is_a?(Soren::Request)
uri = "#{instance_variable_get(:@scheme)}://#{instance_variable_get(:@host)}:" \
"#{instance_variable_get(:@port)}#{request.target}"
sig = WebMock::RequestSignature.new(
request.method.to_s.downcase.to_sym,
uri,
body: request.body.to_s,
headers: request..to_h,
)
WebMock::RequestRegistry.instance.requested_signatures.put(sig)
if (webmock_response = WebMock::StubRegistry.instance.response_for_request(sig))
webmock_response.raise_error_if_any
raise Soren::Error::TimeoutError, 'connection timeout' if webmock_response.should_timeout
if WebMock::CallbackRegistry.any_callbacks?
WebMock::CallbackRegistry.invoke_callbacks({ lib: :soren }, sig, webmock_response)
end
build_soren_response(webmock_response)
elsif WebMock.net_connect_allowed?(sig.uri)
response = super
if WebMock::CallbackRegistry.any_callbacks?
wm = WebMock::Response.new
wm.status = [response.code, response.message]
wm. = response.
wm.body = response.body
WebMock::CallbackRegistry.invoke_callbacks({ lib: :soren, real_request: true }, sig, wm)
end
response
else
raise WebMock::NetConnectNotAllowedError, sig
end
end
|