build_httpclient_response(webmock_response, stream = false, &block)
click to toggle source
def build_httpclient_response(webmock_response, stream = false, &block)
body = stream ? StringIO.new(webmock_response.body) : webmock_response.body
response = HTTP::Message.new_response(body)
response.header.init_response(webmock_response.status[0])
response.reason=webmock_response.status[1]
webmock_response.headers.to_a.each { |name, value| response.header.set(name, value) }
raise HTTPClient::TimeoutError if webmock_response.should_timeout
webmock_response.raise_error_if_any
block.call(response, body) if block
response
end
do_get_block(req, proxy, conn, &block)
click to toggle source
do_get_block_with_webmock(req, proxy, conn, &block)
click to toggle source
def do_get_block_with_webmock(req, proxy, conn, &block)
do_get_with_webmock(req, proxy, conn, false, &block)
end
do_get_block_without_webmock(req, proxy, conn, &block)
click to toggle source
do_get_stream(req, proxy, conn, &block)
click to toggle source
do_get_stream_with_webmock(req, proxy, conn, &block)
click to toggle source
def do_get_stream_with_webmock(req, proxy, conn, &block)
do_get_with_webmock(req, proxy, conn, true, &block)
end
do_get_stream_without_webmock(req, proxy, conn, &block)
click to toggle source
do_get_with_webmock(req, proxy, conn, stream = false, &block)
click to toggle source
def do_get_with_webmock(req, proxy, conn, stream = false, &block)
request_signature = build_request_signature(req)
WebMock::RequestRegistry.instance.requested_signatures.put(request_signature)
if webmock_responses[request_signature]
webmock_response = webmock_responses.delete(request_signature)
response = build_httpclient_response(webmock_response, stream, &block)
@request_filter.each do |filter|
filter.filter_response(req, response)
end
res = conn.push(response)
WebMock::CallbackRegistry.invoke_callbacks(
{:lib => :httpclient}, request_signature, webmock_response)
res
elsif WebMock.net_connect_allowed?(request_signature.uri)
res = if stream
do_get_stream_without_webmock(req, proxy, conn, &block)
else
do_get_block_without_webmock(req, proxy, conn, &block)
end
res = conn.pop
conn.push(res)
if WebMock::CallbackRegistry.any_callbacks?
webmock_response = build_webmock_response(res)
WebMock::CallbackRegistry.invoke_callbacks(
{:lib => :httpclient, :real_request => true}, request_signature,
webmock_response)
end
res
else
raise WebMock::NetConnectNotAllowedError.new(request_signature)
end
end
do_request_async(method, uri, query, body, extheader)
click to toggle source
do_request_async_with_webmock(method, uri, query, body, extheader)
click to toggle source
def do_request_async_with_webmock(method, uri, query, body, extheader)
req = create_request(method, uri, query, body, extheader)
request_signature = build_request_signature(req)
if webmock_responses[request_signature] || WebMock.net_connect_allowed?(request_signature.uri)
do_request_async_without_webmock(method, uri, query, body, extheader)
else
raise WebMock::NetConnectNotAllowedError.new(request_signature)
end
end
do_request_async_without_webmock(method, uri, query, body, extheader)
click to toggle source