class HTTPI::Adapter::Curb
HTTPI::Adapter::Curb¶ ↑
Adapter for the Curb client. rubygems.org/gems/curb
Public Class Methods
new(request = nil)
click to toggle source
# File lib/httpi/adapter/curb.rb, line 12 def initialize(request = nil) end
Public Instance Methods
client()
click to toggle source
Returns a memoized Curl::Easy
instance.
# File lib/httpi/adapter/curb.rb, line 16 def client @client ||= Curl::Easy.new end
delete(request)
click to toggle source
Executes an HTTP DELETE request. @see HTTPI.delete
# File lib/httpi/adapter/curb.rb, line 46 def delete(request) do_request(request) { |client| client.http_delete } end
get(request)
click to toggle source
Executes an HTTP GET request. @see HTTPI.get
# File lib/httpi/adapter/curb.rb, line 22 def get(request) do_request(request) { |client| client.http_get } end
head(request)
click to toggle source
Executes an HTTP HEAD request. @see HTTPI.head
# File lib/httpi/adapter/curb.rb, line 34 def head(request) do_request(request) { |client| client.http_head } end
post(request)
click to toggle source
Executes an HTTP POST request. @see HTTPI.post
# File lib/httpi/adapter/curb.rb, line 28 def post(request) do_request(request) { |client| client.http_post request.body } end
put(request)
click to toggle source
Executes an HTTP PUT request. @see HTTPI.put
# File lib/httpi/adapter/curb.rb, line 40 def put(request) do_request(request) { |client| client.http_put request.body } end
Private Instance Methods
basic_setup(request)
click to toggle source
# File lib/httpi/adapter/curb.rb, line 64 def basic_setup(request) client.url = request.url.to_s client.proxy_url = request.proxy.to_s if request.proxy client.timeout = request.read_timeout if request.read_timeout client.connect_timeout = request.open_timeout if request.open_timeout client.headers = request.headers.to_hash client.verbose = false end
do_request(request) { |client| ... }
click to toggle source
# File lib/httpi/adapter/curb.rb, line 52 def do_request(request) setup_client request yield client respond_with client end
parse_header_string(header_string)
click to toggle source
Borrowed from Webmock's Curb adapter: github.com/bblimke/webmock/blob/master/lib/webmock/http_lib_adapters/curb.rb
# File lib/httpi/adapter/curb.rb, line 93 def parse_header_string(header_string) status, headers = nil, {} return [status, headers] unless header_string header_string.split(/\r\n/).each do |header| if header =~ %r|^HTTP/1.[01] \d\d\d (.*)| status = $1 else parts = header.split(':', 2) unless parts.empty? parts[1].strip! unless parts[1].nil? if headers.has_key?(parts[0]) headers[parts[0]] = [headers[parts[0]]] unless headers[parts[0]].kind_of? Array headers[parts[0]] << parts[1] else headers[parts[0]] = parts[1] end end end end [status, headers] end
respond_with(client)
click to toggle source
# File lib/httpi/adapter/curb.rb, line 86 def respond_with(client) status, headers = parse_header_string(client.header_str) Response.new client.response_code, headers, client.body_str end
setup_client(request)
click to toggle source
# File lib/httpi/adapter/curb.rb, line 58 def setup_client(request) basic_setup request setup_http_auth request if request.auth.http? setup_ssl_auth request.auth.ssl if request.auth.ssl? end
setup_http_auth(request)
click to toggle source
# File lib/httpi/adapter/curb.rb, line 73 def setup_http_auth(request) client.http_auth_types = request.auth.type client.username, client.password = *request.auth.credentials end
setup_ssl_auth(ssl)
click to toggle source
# File lib/httpi/adapter/curb.rb, line 78 def setup_ssl_auth(ssl) client.cert_key = ssl.cert_key_file client.cert = ssl.cert_file client.cacert = ssl.ca_cert_file if ssl.ca_cert_file client.certtype = ssl.cert_type.to_s.upcase client.ssl_verify_peer = ssl.verify_mode == :peer end