class WebMock::HttpLibAdapters::TyphoeusAdapter

Constants

AFTER_REQUEST_CALLBACK
BEFORE_CALLBACK

Public Class Methods

add_after_request_callback() click to toggle source
# File lib/webmock/http_lib_adapters/typhoeus_hydra_adapter.rb, line 43
def self.add_after_request_callback
  unless Typhoeus.on_complete.include?(AFTER_REQUEST_CALLBACK)
    Typhoeus.on_complete << AFTER_REQUEST_CALLBACK
  end
end
add_before_callback() click to toggle source
# File lib/webmock/http_lib_adapters/typhoeus_hydra_adapter.rb, line 33
def self.add_before_callback
  unless Typhoeus.before.include?(BEFORE_CALLBACK)
    Typhoeus.before << BEFORE_CALLBACK
  end
end
build_request_signature(req) click to toggle source
# File lib/webmock/http_lib_adapters/typhoeus_hydra_adapter.rb, line 53
def self.build_request_signature(req)
  uri = WebMock::Util::URI.heuristic_parse(req.url)
  uri.path = uri.normalized_path.gsub("[^:]//","/")
  if req.options[:userpwd]
    uri.user, uri.password = req.options[:userpwd].split(':')
  end

  body = req.options[:body]

  if body.is_a?(Hash)
    body = WebMock::Util::QueryMapper.values_to_query(body)
  end

  request_signature = WebMock::RequestSignature.new(
    req.options[:method] || :get,
    uri.to_s,
    :body => body,
    :headers => req.options[:headers]
  )

  req.instance_variable_set(:@__webmock_request_signature, request_signature)

  request_signature
end
build_webmock_response(typhoeus_response) click to toggle source
# File lib/webmock/http_lib_adapters/typhoeus_hydra_adapter.rb, line 78
def self.build_webmock_response(typhoeus_response)
  webmock_response = WebMock::Response.new
  webmock_response.status = [typhoeus_response.code, typhoeus_response.status_message]
  webmock_response.body = typhoeus_response.body
  webmock_response.headers = typhoeus_response.headers
  webmock_response
end
disable!() click to toggle source
# File lib/webmock/http_lib_adapters/typhoeus_hydra_adapter.rb, line 22
def self.disable!
  @disabled = true
  remove_after_request_callback
  remove_before_callback
  ::Typhoeus::Config.block_connection = false
end
disabled?() click to toggle source
# File lib/webmock/http_lib_adapters/typhoeus_hydra_adapter.rb, line 29
def self.disabled?
  !!@disabled
end
enable!() click to toggle source
# File lib/webmock/http_lib_adapters/typhoeus_hydra_adapter.rb, line 15
def self.enable!
  @disabled = false
  add_before_callback
  add_after_request_callback
  ::Typhoeus::Config.block_connection = true
end
generate_typhoeus_response(request_signature, webmock_response) click to toggle source
# File lib/webmock/http_lib_adapters/typhoeus_hydra_adapter.rb, line 86
def self.generate_typhoeus_response(request_signature, webmock_response)
  response = if webmock_response.should_timeout
    ::Typhoeus::Response.new(
      :code         => 0,
      :status_message => "",
      :body         => "",
      :headers => {},
      :return_code => :operation_timedout
    )
  else
    ::Typhoeus::Response.new(
      :code         => webmock_response.status[0],
      :status_message => webmock_response.status[1],
      :body         => webmock_response.body,
      :headers => webmock_response.headers,
      :effective_url => request_signature.uri
    )
  end
  response.mock = :webmock
  response
end
remove_after_request_callback() click to toggle source
# File lib/webmock/http_lib_adapters/typhoeus_hydra_adapter.rb, line 49
def self.remove_after_request_callback
  Typhoeus.on_complete.delete_if {|v| v == AFTER_REQUEST_CALLBACK }
end
remove_before_callback() click to toggle source
# File lib/webmock/http_lib_adapters/typhoeus_hydra_adapter.rb, line 39
def self.remove_before_callback
  Typhoeus.before.delete_if {|v| v == BEFORE_CALLBACK }
end
request_hash(request_signature) click to toggle source
# File lib/webmock/http_lib_adapters/typhoeus_hydra_adapter.rb, line 108
def self.request_hash(request_signature)
  hash = {}

  hash[:body]    = request_signature.body
  hash[:headers] = request_signature.headers

  hash
end