class HTTP::WebMockPerform

Public Class Methods

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

Public Instance Methods

exec() click to toggle source
# File lib/webmock/http_lib_adapters/http_rb/webmock.rb, line 9
def exec
  replay || perform || halt
end
request_signature() click to toggle source
# File lib/webmock/http_lib_adapters/http_rb/webmock.rb, line 13
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_rb/webmock.rb, line 56
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_rb/webmock.rb, line 60
def invoke_callbacks(webmock_response, options = {})
  ::WebMock::CallbackRegistry.invoke_callbacks(
    options.merge({ :lib => :http_rb }),
    request_signature,
    webmock_response
  )
end
perform() click to toggle source
# File lib/webmock/http_lib_adapters/http_rb/webmock.rb, line 49
def perform
  return unless ::WebMock.net_connect_allowed?(request_signature.uri)
  response = @perform.call
  invoke_callbacks(response.to_webmock, :real_request => true)
  response
end
raise_timeout_error() click to toggle source
# File lib/webmock/http_lib_adapters/http_rb/webmock.rb, line 44
def raise_timeout_error
  raise Errno::ETIMEDOUT if HTTP::VERSION < "1.0.0"
  raise HTTP::ConnectionError, "connection error: #{Errno::ETIMEDOUT.new}"
end
register_request(signature) click to toggle source
# File lib/webmock/http_lib_adapters/http_rb/webmock.rb, line 28
def register_request(signature)
  ::WebMock::RequestRegistry.instance.requested_signatures.put(signature)
end
replay() click to toggle source
# File lib/webmock/http_lib_adapters/http_rb/webmock.rb, line 32
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)
  ::HTTP::Response.from_webmock webmock_response, request_signature
end
response_for_request(signature) click to toggle source
# File lib/webmock/http_lib_adapters/http_rb/webmock.rb, line 24
def response_for_request(signature)
  ::WebMock::StubRegistry.instance.response_for_request(signature)
end