Stream the specified url (via perform) and save the data directly to the supplied filename (defaults to the last component of the URL path, which will usually be the filename most simple urls).
If a block is supplied, it will be passed the curl instance prior to the perform call.
Note that the semantics of the on_body handler are subtly changed when using download, to account for the automatic routing of data to the specified file: The data string is passed to the handler before it is written to the file, allowing the handler to perform mutative operations where necessary. As usual, the transfer will be aborted if the on_body handler returns a size that differs from the data chunk size - in this case, the offending chunk will not be written to the file, the file will be closed, and a Curl::Err::AbortedByCallbackError will be raised.
# File lib/curl/easy.rb, line 425 def download(url, filename = url.split(%r\?/).first.split(%r\//).last, &blk) curl = Curl::Easy.new(url, &blk) output = if filename.is_a? IO filename.binmode if filename.respond_to?(:binmode) filename else File.open(filename, 'wb') end begin old_on_body = curl.on_body do |data| result = old_on_body ? old_on_body.call(data) : data.length output << data if result == data.length result end curl.perform ensure output.close rescue IOError end return curl end
Convenience method that creates a new Curl::Easy
instance with the specified URL and calls http_delete
, before
returning the new instance.
If a block is supplied, the new instance will be yielded just prior to the
http_delete
call.
# File lib/curl/easy.rb, line 400 def http_delete(*args) c = Curl::Easy.new *args yield c if block_given? c.http_delete c end
Convenience method that creates a new Curl::Easy
instance with the specified URL and calls http_get
, before
returning the new instance.
If a block is supplied, the new instance will be yielded just prior to the
http_get
call.
# File lib/curl/easy.rb, line 329 def http_get(*args) c = Curl::Easy.new *args yield c if block_given? c.http_get c end
Convenience method that creates a new Curl::Easy
instance with the specified URL and calls http_head
, before
returning the new instance.
If a block is supplied, the new instance will be yielded just prior to the
http_head
call.
# File lib/curl/easy.rb, line 346 def http_head(*args) c = Curl::Easy.new *args yield c if block_given? c.http_head c end
POST the specified formdata to the currently configured URL using the current options set for this Curl::Easy instance. This method always returns true, or raises an exception (defined under Curl::Err) on error.
If you wish to use multipart form encoding, you’ll need to supply a block in order to set multipart_form_post true. See http_post for more information.
# File lib/curl/easy.rb, line 382 def http_post(*args) url = args.shift c = Curl::Easy.new url yield c if block_given? c.http_post *args c end
see easy.http_put
# File lib/curl/easy.rb, line 359 def http_put(url, data) c = Curl::Easy.new url yield c if block_given? c.http_put data c end
Convenience method that creates a new Curl::Easy
instance with the specified URL and calls the general perform
method, before returning the new instance. For HTTP URLs, this is
equivalent to calling http_get
.
If a block is supplied, the new instance will be yielded just prior to the
http_get
call.
# File lib/curl/easy.rb, line 312 def perform(*args) c = Curl::Easy.new *args yield c if block_given? c.perform c end
# File lib/curl/easy.rb, line 455 def cert=(cert_file) pos = cert_file.rindex(':') if pos && pos > 1 self.native_cert= cert_file[0..pos-1] self.certpassword= cert_file[pos+1..-1] else self.native_cert= cert_file end self.cert end
# File lib/curl/easy.rb, line 83 def delete=(onoff) set :customrequest, onoff ? 'delete' : nil onoff end
Configure whether this Curl instance will follow
Location: headers in HTTP responses. Redirects will only be followed to the
extent specified by max_redirects
.
# File lib/curl/easy.rb, line 252 def follow_location=(onoff) set :followlocation, onoff end
# File lib/curl/easy.rb, line 240 def head=(onoff) set :nobody, onoff end
DELETE the currently configured URL using the current options set for this Curl::Easy instance. This method always returns true, or raises an exception (defined under Curl::Err) on error.
# File lib/curl/easy.rb, line 294 def http_delete self.http :DELETE end
GET the currently configured URL using the current options set for this Curl::Easy instance. This method always returns true, or raises an exception (defined under Curl::Err) on error.
# File lib/curl/easy.rb, line 280 def http_get set :httpget, true http :GET end
Request headers from the currently configured URL using the HEAD method and current options set for this Curl::Easy instance. This method always returns true, or raises an exception (defined under Curl::Err) on error.
# File lib/curl/easy.rb, line 265 def http_head set :nobody, true ret = self.perform set :nobody, false ret end
Set the interface name to use as the outgoing network interface. The name can be an interface name, an IP address or a host name.
# File lib/curl/easy.rb, line 167 def interface=(value) set :interface, value end
easy = Curl::Easy.new easy.nosignal = true
# File lib/curl/easy.rb, line 72 def nosignal=(onoff) set :nosignal, !!onoff end
Transfer the currently configured URL using the options set for this Curl::Easy instance. If this is an HTTP URL, it will be transferred via the configured HTTP Verb.
# File lib/curl/easy.rb, line 53 def perform self.multi = Curl::Multi.new if self.multi.nil? self.multi.add self ret = self.multi.perform if self.last_result != 0 && self.on_failure.nil? error = Curl::Easy.error(self.last_result) raise error.first end ret end
Set the URL of the HTTP proxy to use for subsequent calls to
perform
. The URL should specify the the host name or dotted IP
address. To specify port number in this string, append :[port] to the end
of the host name. The proxy string may be prefixed with [protocol]:// since
any such prefix will be ignored. The proxy’s port number may optionally be
specified with the separate option proxy_port .
When you tell the library to use an HTTP proxy, libcurl will transparently convert operations to HTTP even if you specify an FTP URL etc. This may have an impact on what other features of the library you can use, such as FTP specifics that don’t work unless you tunnel through the HTTP proxy. Such tunneling is activated with proxy_tunnel = true.
libcurl respects the environment variables http_proxy, ftp_proxy, all_proxy etc, if any of those is set. The proxy_url option does however override any possibly set environment variables.
Starting with libcurl 7.14.1, the proxy host string given in environment variables can be specified the exact same way as the proxy can be set with proxy_url, including protocol prefix (http://) and embedded user + password.
# File lib/curl/easy.rb, line 136 def proxy_url=(url) set :proxy, url end
Set the username/password string to use for proxy connection during
subsequent calls to perform
. The supplied string should have
the form “username:password”
# File lib/curl/easy.rb, line 190 def proxypwd=(value) set :proxyuserpwd, value end
set options on the curl easy handle see curl.haxx.se/libcurl/c/curl_easy_setopt.html
# File lib/curl/easy.rb, line 27 def set(opt,val) if opt.is_a?(Symbol) setopt(sym2curl(opt), val) else setopt(opt.to_i, val) end end
# File lib/curl/easy.rb, line 140 def ssl_verify_host=(value) value = 1 if value.class == TrueClass value = 0 if value.class == FalseClass self.ssl_verify_host_integer=value end
Deprecated: call easy.ssl_verify_host instead can be one of [0,1,2]
Determine whether this Curl instance will verify that the server cert is for the server it is known as.
# File lib/curl/easy.rb, line 156 def ssl_verify_host? ssl_verify_host.nil? ? false : (ssl_verify_host > 0) end
# File lib/curl/easy.rb, line 11 def status parts = self.header_str.split(%r\s/) status = [] parts.shift while parts.size > 0 && parts.first != '' status << parts.shift end status.join(' ') end
translates ruby symbols to libcurl options
# File lib/curl/easy.rb, line 41 def sym2curl(opt) Curl.const_get("CURLOPT_#{opt.to_s.upcase}") end
Set the URL for subsequent calls to perform
. It is acceptable
(and even recommended) to reuse Curl::Easy
instances by reassigning the URL between calls to perform
.
# File lib/curl/easy.rb, line 107 def url=(u) set :url, u end
Set the username/password string to use for subsequent calls to
perform
. The supplied string should have the form
“username:password”
# File lib/curl/easy.rb, line 178 def userpwd=(value) set :userpwd, value end
easy = Curl::Easy.new(“url”) easy.version = Curl::HTTP_1_1 easy.version = Curl::HTTP_1_0 easy.version = Curl::HTTP_NONE
# File lib/curl/easy.rb, line 95 def version=(http_version) set :http_version, http_version end