module Ethon::Easies::Options

def self.included(base)

:nodoc:
def self.included(base)
  base.extend ClassMethods
  base.const_set(:AVAILABLE_OPTIONS, [
    :dns_cache_timeout, :httppost, :put, :httpget, :nobody, :upload,
    :customrequest, :cainfo, :capath, :connecttimeout,
    :followlocation, :httpauth, :infilesize, :interface,
    :maxredirs, :nosignal, :postfieldsize, :copypostfields, :proxy,
    :proxyauth, :proxytype, :timeout, :readdata, :sslcert, :ssl_verifypeer, :ssl_verifyhost,
    :sslcerttype, :sslkey, :sslkeytype, :sslversion,
    :url, :useragent, :userpwd, :verbose, :readfunction
  ])
  base.send(:attr_accessor, *Ethon::Easy::AVAILABLE_OPTIONS)
end

def set_options

Other tags:
    Example: Set options. -
def set_options
  self.class.available_options.each do |option|
    value = value_for(option)
    next if value.nil?
    Curl.set_option(option, value, handle)
  end
end

def value_for(option)

Returns:
  • (Object) - The casted value.

Other tags:
    Example: Return casted the value. -
def value_for(option)
  value = method(option).call
  return nil if value.nil?
  if self.class.bool_options.include?(option)
    value ? 1 : 0
  elsif self.class.enum_options.key?(option)
    self.class.enum_options[option][value]
  elsif self.class.int_options.include?(option)
    value.to_i
  elsif value.is_a?(::String)
    Util.escape_zero_byte(value)
  else
    value
  end
end