class HTTP::WebMockPerform

Public Class Methods

new(request, &perform) click to toggle source
# File lib/webmock/http_lib_adapters/http_gem/webmock.rb, line 3
def initialize(request, &perform)
  @request = request
  @perform = perform
end

Public Instance Methods

exec() click to toggle source
# File lib/webmock/http_lib_adapters/http_gem/webmock.rb, line 8
def exec
  replay || perform || halt
end
request_signature() click to toggle source
# File lib/webmock/http_lib_adapters/http_gem/webmock.rb, line 12
def request_signature
  unless @request_signature
    @request_signature = @request.webmock_signature
    register_request(@request_signature)
  end

  @request_signature
end

Protected Instance Methods

halt() click to toggle source
# File lib/webmock/http_lib_adapters/http_gem/webmock.rb, line 50
def halt
  raise ::WebMock::NetConnectNotAllowedError.new request_signature
end
invoke_callbacks(webmock_response, options = {}) click to toggle source
# File lib/webmock/http_lib_adapters/http_gem/webmock.rb, line 54
def invoke_callbacks(webmock_response, options = {})
  ::WebMock::CallbackRegistry.invoke_callbacks(
    options.merge({ :lib => :http_gem }),
    request_signature,
    webmock_response
  )
end
perform() click to toggle source
# File lib/webmock/http_lib_adapters/http_gem/webmock.rb, line 43
def perform
  return unless ::WebMock.net_connect_allowed?(request_signature.uri)
  response = @perform.call
  invoke_callbacks(response.to_webmock, :real_request => true)
  response
end
register_request(signature) click to toggle source
# File lib/webmock/http_lib_adapters/http_gem/webmock.rb, line 27
def register_request(signature)
  ::WebMock::RequestRegistry.instance.requested_signatures.put(signature)
end
replay() click to toggle source
# File lib/webmock/http_lib_adapters/http_gem/webmock.rb, line 31
def replay
  webmock_response = response_for_request request_signature

  return unless webmock_response

  raise Errno::ETIMEDOUT if webmock_response.should_timeout
  webmock_response.raise_error_if_any

  invoke_callbacks(webmock_response, :real_request => false)
  ::HTTP::Response.from_webmock webmock_response, request_signature
end
response_for_request(signature) click to toggle source
# File lib/webmock/http_lib_adapters/http_gem/webmock.rb, line 23
def response_for_request(signature)
  ::WebMock::StubRegistry.instance.response_for_request(signature)
end