Parent

Class/Module Index [+]

Quicksearch

Curl::WebMockCurlEasy

Public Instance Methods

body_str() click to toggle source
# File lib/webmock/http_lib_adapters/curb_adapter.rb, line 223
def body_str
  @body_str || super
end
build_curb_response(webmock_response) click to toggle source
# File lib/webmock/http_lib_adapters/curb_adapter.rb, line 108
def build_curb_response(webmock_response)
  raise Curl::Err::TimeoutError if webmock_response.should_timeout
  webmock_response.raise_error_if_any

  @body_str = webmock_response.body
  @response_code = webmock_response.status[0]

  @header_str = "HTTP/1.1 #{webmock_response.status[0]} #{webmock_response.status[1]}\r\n"
  if webmock_response.headers
    @header_str << webmock_response.headers.map do |k,v|
      "#{k}: #{v.is_a?(Array) ? v.join(", ") : v}"
    end.join("\r\n")

    location = webmock_response.headers['Location']
    if self.follow_location? && location
      @last_effective_url = location
      webmock_follow_location(location)
    end

    @content_type = webmock_response.headers["Content-Type"]
  end

  @last_effective_url ||= self.url
end
build_request_signature() click to toggle source
# File lib/webmock/http_lib_adapters/curb_adapter.rb, line 82
def build_request_signature
  method = @webmock_method.to_s.downcase.to_sym

  uri = WebMock::Util::URI.heuristic_parse(self.url)
  uri.path = uri.normalized_path.gsub("[^:]//","/")
  uri.user = self.username
  uri.password = self.password

  request_body = case method
  when :post
    self.post_body || @post_body
  when :put
    @put_data
  else
    nil
  end

  request_signature = WebMock::RequestSignature.new(
    method,
    uri.to_s,
    :body => request_body,
    :headers => self.headers
  )
  request_signature
end
build_webmock_response() click to toggle source
# File lib/webmock/http_lib_adapters/curb_adapter.rb, line 158
def build_webmock_response
  status, headers =
   WebMock::HttpLibAdapters::CurbAdapter.parse_header_string(self.header_str)

  webmock_response = WebMock::Response.new
  webmock_response.status = [self.response_code, status]
  webmock_response.body = self.body_str
  webmock_response.headers = headers
  webmock_response
end
content_type() click to toggle source
# File lib/webmock/http_lib_adapters/curb_adapter.rb, line 239
def content_type
  @content_type || super
end
curb_or_webmock() click to toggle source
# File lib/webmock/http_lib_adapters/curb_adapter.rb, line 57
def curb_or_webmock

  request_signature = build_request_signature
  WebMock::RequestRegistry.instance.requested_signatures.put(request_signature)

  if webmock_response = WebMock::StubRegistry.instance.response_for_request(request_signature)
    build_curb_response(webmock_response)
    WebMock::CallbackRegistry.invoke_callbacks(
      {:lib => :curb}, request_signature, webmock_response)
    invoke_curb_callbacks
    true
  elsif WebMock.net_connect_allowed?(request_signature.uri)
    res = yield
    if WebMock::CallbackRegistry.any_callbacks?
      webmock_response = build_webmock_response
      WebMock::CallbackRegistry.invoke_callbacks(
        {:lib => :curb, :real_request => true}, request_signature,
          webmock_response)
    end
    res
  else
    raise WebMock::NetConnectNotAllowedError.new(request_signature)
  end
end
delete=(value) click to toggle source
# File lib/webmock/http_lib_adapters/curb_adapter.rb, line 213
def delete= value
  @webmock_method = :delete if value
  super
end
head=(value) click to toggle source
# File lib/webmock/http_lib_adapters/curb_adapter.rb, line 218
def head= value
  @webmock_method = :head if value
  super
end
header_str() click to toggle source
# File lib/webmock/http_lib_adapters/curb_adapter.rb, line 231
def header_str
  @header_str || super
end
http(method) click to toggle source

Mocks of Curl::Easy methods below here.

# File lib/webmock/http_lib_adapters/curb_adapter.rb, line 173
def http(method)
  @webmock_method = method
  super
end
http_post(*data) click to toggle source
# File lib/webmock/http_lib_adapters/curb_adapter.rb, line 191
def http_post *data
  @webmock_method = :post
  @post_body = data.join('&') if data && !data.empty?
  super
end
http_put(data = nil) click to toggle source
# File lib/webmock/http_lib_adapters/curb_adapter.rb, line 185
def http_put data = nil
  @webmock_method = :put
  @put_data = data if data
  super
end
invoke_curb_callbacks() click to toggle source
# File lib/webmock/http_lib_adapters/curb_adapter.rb, line 144
def invoke_curb_callbacks
  @on_progress.call(0.0,1.0,0.0,1.0) if @on_progress
  self.header_str.lines.each { |header_line| @on_header.call header_line } if @on_header
  @on_body.call(self.body_str) if @on_body
  @on_complete.call(self) if @on_complete

  case response_code
  when 200..299
    @on_success.call(self) if @on_success
  when 400..599
    @on_failure.call(self, self.response_code) if @on_failure
  end
end
last_effective_url() click to toggle source
# File lib/webmock/http_lib_adapters/curb_adapter.rb, line 235
def last_effective_url
  @last_effective_url || super
end
perform() click to toggle source
# File lib/webmock/http_lib_adapters/curb_adapter.rb, line 197
def perform
  @webmock_method ||= :get
  curb_or_webmock { super }
end
post_body=(data) click to toggle source
# File lib/webmock/http_lib_adapters/curb_adapter.rb, line 208
def post_body= data
  @webmock_method = :post
  super
end
put_data=(data) click to toggle source
# File lib/webmock/http_lib_adapters/curb_adapter.rb, line 202
def put_data= data
  @webmock_method = :put
  @put_data = data
  super
end
response_code() click to toggle source
# File lib/webmock/http_lib_adapters/curb_adapter.rb, line 227
def response_code
  @response_code || super
end
webmock_follow_location(location) click to toggle source
# File lib/webmock/http_lib_adapters/curb_adapter.rb, line 133
def webmock_follow_location(location)
  first_url = self.url
  self.url = location

  curb_or_webmock do
    send( "http_#{@webmock_method}_without_webmock" )
  end

  self.url = first_url
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.