class HTTP::WebMockPerform
Public Class Methods
Source
# File lib/webmock/http_lib_adapters/http_rb/webmock.rb, line 5 def initialize(request, options, &perform) @request = request @options = options @perform = perform @request_signature = nil end
Public Instance Methods
Source
# File lib/webmock/http_lib_adapters/http_rb/webmock.rb, line 12 def exec replay || perform || halt end
Source
# File lib/webmock/http_lib_adapters/http_rb/webmock.rb, line 16 def request_signature unless @request_signature @request_signature = @request.webmock_signature register_request(@request_signature) end @request_signature end
Protected Instance Methods
Source
# File lib/webmock/http_lib_adapters/http_rb/webmock.rb, line 62 def halt raise ::WebMock::NetConnectNotAllowedError.new request_signature end
Source
# File lib/webmock/http_lib_adapters/http_rb/webmock.rb, line 66 def invoke_callbacks(webmock_response, options = {}) ::WebMock::CallbackRegistry.invoke_callbacks( options.merge({ lib: :http_rb }), request_signature, webmock_response ) end
Source
# File lib/webmock/http_lib_adapters/http_rb/webmock.rb, line 55 def perform return unless ::WebMock.net_connect_allowed?(request_signature.uri) response = @perform.call invoke_callbacks(response.to_webmock, real_request: true) response end
Source
# File lib/webmock/http_lib_adapters/http_rb/webmock.rb, line 50 def raise_timeout_error raise Errno::ETIMEDOUT if HTTP::VERSION < "1.0.0" raise HTTP::TimeoutError, "connection error: #{Errno::ETIMEDOUT.new}" end
Source
# File lib/webmock/http_lib_adapters/http_rb/webmock.rb, line 31 def register_request(signature) ::WebMock::RequestRegistry.instance.requested_signatures.put(signature) end
Source
# File lib/webmock/http_lib_adapters/http_rb/webmock.rb, line 35 def replay webmock_response = response_for_request request_signature return unless webmock_response raise_timeout_error if webmock_response.should_timeout webmock_response.raise_error_if_any invoke_callbacks(webmock_response, real_request: false) response = ::HTTP::Response.from_webmock @request, webmock_response, request_signature @options.features.each { |_name, feature| response = feature.wrap_response(response) } response end
Source
# File lib/webmock/http_lib_adapters/http_rb/webmock.rb, line 27 def response_for_request(signature) ::WebMock::StubRegistry.instance.response_for_request(signature) end