51 lines
1.1 KiB
Ruby
51 lines
1.1 KiB
Ruby
# frozen_string_literal: true
|
|
module Ethon
|
|
class Easy
|
|
|
|
# This module contains the logic and knowledge about the
|
|
# available options on easy.
|
|
module Options
|
|
attr_reader :url
|
|
|
|
def url=(value)
|
|
@url = value
|
|
Curl.set_option(:url, value, handle)
|
|
end
|
|
|
|
def escape=( b )
|
|
@escape = b
|
|
end
|
|
|
|
def escape?
|
|
return true if !defined?(@escape) || @escape.nil?
|
|
@escape
|
|
end
|
|
|
|
def multipart=(b)
|
|
@multipart = b
|
|
end
|
|
|
|
def multipart?
|
|
!!@multipart
|
|
end
|
|
|
|
Curl.easy_options(nil).each do |opt, props|
|
|
method_name = "#{opt}=".freeze
|
|
unless method_defined? method_name
|
|
define_method(method_name) do |value|
|
|
Curl.set_option(opt, value, handle)
|
|
value
|
|
end
|
|
end
|
|
next if props[:type] != :callback || method_defined?(opt)
|
|
define_method(opt) do |&block|
|
|
@procs ||= {}
|
|
@procs[opt.to_sym] = block
|
|
Curl.set_option(opt, block, handle)
|
|
nil
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|