class Curl::WebMockCurlEasy
Public Instance Methods
basic_auth_headers()
click to toggle source
# File lib/webmock/http_lib_adapters/curb_adapter.rb, line 141 def basic_auth_headers if self.username {'Authorization' => WebMock::Util::Headers.basic_auth_header(self.username, self.password)} else {} end end
body_str()
click to toggle source
Calls superclass method
# File lib/webmock/http_lib_adapters/curb_adapter.rb, line 305 def body_str @body_str ||= super end
Also aliased as: body
build_curb_response(webmock_response)
click to toggle source
# File lib/webmock/http_lib_adapters/curb_adapter.rb, line 149 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".dup @on_debug.call(@header_str, 1) if defined?( @on_debug ) if webmock_response.headers @header_str << webmock_response.headers.map do |k,v| header = "#{k}: #{v.is_a?(Array) ? v.join(", ") : v}" @on_debug.call(header + "\r\n", 1) if defined?( @on_debug ) header end.join("\r\n") @on_debug.call("\r\n", 1) if defined?( @on_debug ) 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"] @transfer_encoding = webmock_response.headers["Transfer-Encoding"] 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("[^:]//","/") headers = headers_as_hash(self.headers).merge(basic_auth_headers) request_body = case method when :post, :patch self.post_body || @post_body when :put @put_data else nil end if defined?( @on_debug ) @on_debug.call("Trying 127.0.0.1...\r\n", 0) @on_debug.call('Connected to ' + uri.hostname + "\r\n", 0) @debug_method = method.upcase @debug_path = uri.path @debug_host = uri.hostname http_request = ["#{@debug_method} #{@debug_path} HTTP/1.1"] http_request << "Host: #{uri.hostname}" headers.each do |name, value| http_request << "#{name}: #{value}" end @on_debug.call(http_request.join("\r\n") + "\r\n\r\n", 2) if request_body @on_debug.call(request_body + "\r\n", 4) @on_debug.call( "upload completely sent off: #{request_body.bytesize}"\ " out of #{request_body.bytesize} bytes\r\n", 0 ) end end request_signature = WebMock::RequestSignature.new( method, uri.to_s, body: request_body, headers: headers ) request_signature end
build_webmock_response()
click to toggle source
# File lib/webmock/http_lib_adapters/curb_adapter.rb, line 220 def build_webmock_response status, headers = WebMock::HttpLibAdapters::CurbAdapter.parse_header_string(self.header_str) if defined?( @on_debug ) http_response = ["HTTP/1.0 #{@debug_method} #{@debug_path}"] headers.each do |name, value| http_response << "#{name}: #{value}" end http_response << self.body_str @on_debug.call(http_response.join("\r\n") + "\r\n", 3) @on_debug.call("Connection #0 to host #{@debug_host} left intact\r\n", 0) end 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
chunked_response?()
click to toggle source
# File lib/webmock/http_lib_adapters/curb_adapter.rb, line 216 def chunked_response? defined?( @transfer_encoding ) && @transfer_encoding == 'chunked' && self.body_str.respond_to?(:each) end
content_type()
click to toggle source
Calls superclass method
# File lib/webmock/http_lib_adapters/curb_adapter.rb, line 323 def content_type @content_type ||= super end
curb_or_webmock() { || ... }
click to toggle source
# File lib/webmock/http_lib_adapters/curb_adapter.rb, line 58 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
Calls superclass method
# File lib/webmock/http_lib_adapters/curb_adapter.rb, line 287 def delete= value @webmock_method = :delete if value super end
head=(value)
click to toggle source
Calls superclass method
# File lib/webmock/http_lib_adapters/curb_adapter.rb, line 292 def head= value @webmock_method = :head if value super end
header_str()
click to toggle source
Calls superclass method
# File lib/webmock/http_lib_adapters/curb_adapter.rb, line 314 def header_str @header_str ||= super end
Also aliased as: head
headers_as_hash(headers)
click to toggle source
# File lib/webmock/http_lib_adapters/curb_adapter.rb, line 129 def headers_as_hash(headers) if headers.is_a?(Array) headers.inject({}) {|hash, header| name, value = header.split(":").map(&:strip) hash[name] = value hash } else headers end end
http(method)
click to toggle source
Mocks of Curl::Easy methods below here.
Calls superclass method
# File lib/webmock/http_lib_adapters/curb_adapter.rb, line 245 def http(method) @webmock_method = method super end
http_post(*data)
click to toggle source
Calls superclass method
# File lib/webmock/http_lib_adapters/curb_adapter.rb, line 264 def http_post *data @webmock_method = :post @post_body = data.join('&') if data && !data.empty? super end
Also aliased as: post
http_put(data = nil)
click to toggle source
Calls superclass method
# File lib/webmock/http_lib_adapters/curb_adapter.rb, line 257 def http_put data = nil @webmock_method = :put @put_data = data if data super end
Also aliased as: put
invoke_curb_callbacks()
click to toggle source
# File lib/webmock/http_lib_adapters/curb_adapter.rb, line 192 def invoke_curb_callbacks @on_progress.call(0.0,1.0,0.0,1.0) if defined?( @on_progress ) self.header_str.lines.each { |header_line| @on_header.call header_line } if defined?( @on_header ) if defined?( @on_body ) if chunked_response? self.body_str.each do |chunk| @on_body.call(chunk) end else @on_body.call(self.body_str) end end @on_complete.call(self) if defined?( @on_complete ) case response_code when 200..299 @on_success.call(self) if defined?( @on_success ) when 400..499 @on_missing.call(self, self.response_code) if defined?( @on_missing ) when 500..599 @on_failure.call(self, self.response_code) if defined?( @on_failure ) end end
last_effective_url()
click to toggle source
Calls superclass method
# File lib/webmock/http_lib_adapters/curb_adapter.rb, line 319 def last_effective_url @last_effective_url ||= super end
perform()
click to toggle source
Calls superclass method
# File lib/webmock/http_lib_adapters/curb_adapter.rb, line 271 def perform @webmock_method ||= :get curb_or_webmock { super } end
post_body=(data)
click to toggle source
Calls superclass method
# File lib/webmock/http_lib_adapters/curb_adapter.rb, line 282 def post_body= data @webmock_method = :post super end
put_data=(data)
click to toggle source
Calls superclass method
# File lib/webmock/http_lib_adapters/curb_adapter.rb, line 276 def put_data= data @webmock_method = :put @put_data = data super end
reset()
click to toggle source
Calls superclass method
# File lib/webmock/http_lib_adapters/curb_adapter.rb, line 336 def reset instance_variable_set(:@body_str, nil) super end
response_code()
click to toggle source
Calls superclass method
# File lib/webmock/http_lib_adapters/curb_adapter.rb, line 310 def response_code @response_code ||= super end
verbose=(verbose)
click to toggle source
# File lib/webmock/http_lib_adapters/curb_adapter.rb, line 297 def verbose=(verbose) @verbose = verbose end
verbose?()
click to toggle source
# File lib/webmock/http_lib_adapters/curb_adapter.rb, line 301 def verbose? @verbose ||= false end
webmock_follow_location(location)
click to toggle source
# File lib/webmock/http_lib_adapters/curb_adapter.rb, line 181 def webmock_follow_location(location) first_url = self.url self.url = location curb_or_webmock do send( :http, {'method' => @webmock_method} ) end self.url = first_url end