Module: Ethon::Curls::Options

Included in:
Ethon::Curl
Defined in:
lib/ethon/curls/options.rb

Overview

This module contains logic for setting options on easy or multi interface.

Instance Method Summary collapse

Instance Method Details

#easy_optionsObject



41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
# File 'lib/ethon/curls/options.rb', line 41

def easy_options
  {
    :file                        =>  option_types[:object_point]    +  1,
    :writedata                   =>  option_types[:object_point]    +  1,
    :url                         =>  option_types[:object_point]    +  2,
    :port                        =>  option_types[:long]            +  3,
    :proxy                       =>  option_types[:object_point]    +  4,
    :userpwd                     =>  option_types[:object_point]    +  5,
    :proxyuserpwd                =>  option_types[:object_point]    +  6,
    :range                       =>  option_types[:object_point]    +  7,
    :infile                      =>  option_types[:object_point]    +  9,
    :readdata                    =>  option_types[:object_point]    +  9,
    :errorbuffer                 =>  option_types[:object_point]    +  10,
    :writefunction               =>  option_types[:function_point]  +  11,
    :readfunction                =>  option_types[:function_point]  +  12,
    :timeout                     =>  option_types[:long]            +  13,
    :infilesize                  =>  option_types[:long]            +  14,
    :postfields                  =>  option_types[:object_point]    +  15,
    :referer                     =>  option_types[:object_point]    +  16,
    :ftpport                     =>  option_types[:object_point]    +  17,
    :useragent                   =>  option_types[:object_point]    +  18,
    :low_speed_time              =>  option_types[:long]            +  20,
    :resume_from                 =>  option_types[:long]            +  21,
    :cookie                      =>  option_types[:object_point]    +  22,
    :httpheader                  =>  option_types[:object_point]    +  23,
    :httppost                    =>  option_types[:object_point]    +  24,
    :sslcert                     =>  option_types[:object_point]    +  25,
    :keypasswd                   =>  option_types[:object_point]    +  26,
    :crlf                        =>  option_types[:long]            +  27,
    :quote                       =>  option_types[:object_point]    +  28,
    :writeheader                 =>  option_types[:object_point]    +  29,
    :headerdata                  =>  option_types[:object_point]    +  29,
    :cookiefile                  =>  option_types[:object_point]    +  31,
    :sslversion                  =>  option_types[:long]            +  32,
    :timecondition               =>  option_types[:long]            +  33,
    :timevalue                   =>  option_types[:long]            +  34,
    :customrequest               =>  option_types[:object_point]    +  36,
    :stderr                      =>  option_types[:object_point]    +  37,
    :postquote                   =>  option_types[:object_point]    +  39,
    :writeinfo                   =>  option_types[:object_point]    +  40,
    :verbose                     =>  option_types[:long]            +  41,
    :header                      =>  option_types[:long]            +  42,
    :noprogress                  =>  option_types[:long]            +  43,
    :nobody                      =>  option_types[:long]            +  44,
    :failonerror                 =>  option_types[:long]            +  45,
    :upload                      =>  option_types[:long]            +  46,
    :post                        =>  option_types[:long]            +  47,
    :ftplistonly                 =>  option_types[:long]            +  48,
    :ftpappend                   =>  option_types[:long]            +  50,
    :netrc                       =>  option_types[:long]            +  51,
    :followlocation              =>  option_types[:long]            +  52,
    :transfertext                =>  option_types[:long]            +  53,
    :put                         =>  option_types[:long]            +  54,
    :progressfunction            =>  option_types[:function_point]  +  56,
    :progressdata                =>  option_types[:object_point]    +  57,
    :autoreferer                 =>  option_types[:long]            +  58,
    :proxyport                   =>  option_types[:long]            +  59,
    :postfieldsize               =>  option_types[:long]            +  60,
    :httpproxytunnel             =>  option_types[:long]            +  61,
    :interface                   =>  option_types[:object_point]    +  62,
    :ssl_verifypeer              =>  option_types[:long]            +  64,
    :cainfo                      =>  option_types[:object_point]    +  65,
    :maxredirs                   =>  option_types[:long]            +  68,
    :filetime                    =>  option_types[:long]            +  69,
    :telnetoptions               =>  option_types[:object_point]    +  70,
    :maxconnects                 =>  option_types[:long]            +  71,
    :closepolicy                 =>  option_types[:long]            +  72,
    :fresh_connect               =>  option_types[:long]            +  74,
    :forbid_reuse                =>  option_types[:long]            +  75,
    :random_file                 =>  option_types[:object_point]    +  76,
    :egdsocket                   =>  option_types[:object_point]    +  77,
    :connecttimeout              =>  option_types[:long]            +  78,
    :headerfunction              =>  option_types[:function_point]  +  79,
    :httpget                     =>  option_types[:long]            +  80,
    :ssl_verifyhost              =>  option_types[:long]            +  81,
    :cookiejar                   =>  option_types[:object_point]    +  82,
    :ssl_cipher_list             =>  option_types[:object_point]    +  83,
    :http_version                =>  option_types[:long]            +  84,
    :ftp_use_epsv                =>  option_types[:long]            +  85,
    :sslcerttype                 =>  option_types[:object_point]    +  86,
    :sslkey                      =>  option_types[:object_point]    +  87,
    :sslkeytype                  =>  option_types[:object_point]    +  88,
    :sslengine                   =>  option_types[:object_point]    +  89,
    :sslengine_default           =>  option_types[:long]            +  90,
    :dns_use_global_cache        =>  option_types[:long]            +  91,
    :dns_cache_timeout           =>  option_types[:long]            +  92,
    :prequote                    =>  option_types[:object_point]    +  93,
    :debugfunction               =>  option_types[:function_point]  +  94,
    :debugdata                   =>  option_types[:object_point]    +  95,
    :cookiesession               =>  option_types[:long]            +  96,
    :capath                      =>  option_types[:object_point]    +  97,
    :buffersize                  =>  option_types[:long]            +  98,
    :nosignal                    =>  option_types[:long]            +  99,
    :share                       =>  option_types[:object_point]    +  100,
    :proxytype                   =>  option_types[:long]            +  101,
    :encoding                    =>  option_types[:object_point]    +  102,
    :private                     =>  option_types[:object_point]    +  103,
    :unrestricted_auth           =>  option_types[:long]            +  105,
    :ftp_use_eprt                =>  option_types[:long]            +  106,
    :httpauth                    =>  option_types[:long]            +  107,
    :ssl_ctx_function            =>  option_types[:function_point]  +  108,
    :ssl_ctx_data                =>  option_types[:object_point]    +  109,
    :ftp_create_missing_dirs     =>  option_types[:long]            +  110,
    :proxyauth                   =>  option_types[:long]            +  111,
    :ipresolve                   =>  option_types[:long]            +  113,
    :maxfilesize                 =>  option_types[:long]            +  114,
    :infilesize_large            =>  option_types[:off_t]           +  115,
    :resume_from_large           =>  option_types[:off_t]           +  116,
    :maxfilesize_large           =>  option_types[:off_t]           +  117,
    :netrc_file                  =>  option_types[:object_point]    +  118,
    :ftp_ssl                     =>  option_types[:long]            +  119,
    :postfieldsize_large         =>  option_types[:off_t]           +  120,
    :tcp_nodelay                 =>  option_types[:long]            +  121,
    :ftpsslauth                  =>  option_types[:long]            +  129,
    :ioctlfunction               =>  option_types[:function_point]  +  130,
    :ioctldata                   =>  option_types[:object_point]    +  131,
    :ftp_account                 =>  option_types[:object_point]    +  134,
    :cookielist                  =>  option_types[:object_point]    +  135,
    :ignore_content_length       =>  option_types[:long]            +  136,
    :ftp_skip_pasv_ip            =>  option_types[:long]            +  137,
    :ftp_filemethod              =>  option_types[:long]            +  138,
    :localport                   =>  option_types[:long]            +  139,
    :localportrange              =>  option_types[:long]            +  140,
    :connect_only                =>  option_types[:long]            +  141,
    :conv_from_network_function  =>  option_types[:function_point]  +  142,
    :conv_to_network_function    =>  option_types[:function_point]  +  143,
    :max_send_speed_large        =>  option_types[:off_t]           +  145,
    :max_recv_speed_large        =>  option_types[:off_t]           +  146,
    :ftp_alternative_to_user     =>  option_types[:object_point]    +  147,
    :sockoptfunction             =>  option_types[:function_point]  +  148,
    :sockoptdata                 =>  option_types[:object_point]    +  149,
    :ssl_sessionid_cache         =>  option_types[:long]            +  150,
    :ssh_auth_types              =>  option_types[:long]            +  151,
    :ssh_public_keyfile          =>  option_types[:object_point]    +  152,
    :ssh_private_keyfile         =>  option_types[:object_point]    +  153,
    :ftp_ssl_ccc                 =>  option_types[:long]            +  154,
    :timeout_ms                  =>  option_types[:long]            +  155,
    :connecttimeout_ms           =>  option_types[:long]            +  156,
    :http_transfer_decoding      =>  option_types[:long]            +  157,
    :http_content_decoding       =>  option_types[:long]            +  158,
    :copypostfields              =>  option_types[:object_point]    +  165,
    :proxy_transfer_mode         =>  option_types[:long]            +  166,
    :seekfunction                =>  option_types[:function_point]  +  167,
    :seekdata                    =>  option_types[:object_point]    +  168,
    :crlfile                     =>  option_types[:object_point]    +  169,
    :issuercert                  =>  option_types[:object_point]    +  170,
    :address_scope               =>  option_types[:long]            +  171,
    :certinfo                    =>  option_types[:long]            +  172,
    :username                    =>  option_types[:object_point]    +  173,
    :password                    =>  option_types[:object_point]    +  174,
    :proxyusername               =>  option_types[:object_point]    +  175,
    :proxypassword               =>  option_types[:object_point]    +  176,
    :noproxy                     =>  option_types[:object_point]    +  177,
    :tftp_blksize                =>  option_types[:long]            +  178,
    :socks5_gssapi_service       =>  option_types[:object_point]    +  179,
    :socks5_gssapi_nec           =>  option_types[:long]            +  180,
    :protocols                   =>  option_types[:long]            +  181,
    :redir_protocols             =>  option_types[:long]            +  182,
    :ssh_knownhosts              =>  option_types[:object_point]    +  183,
    :ssh_keyfunction             =>  option_types[:function_point]  +  184,
    :ssh_keydata                 =>  option_types[:object_point]    +  185,
    :mail_from                   =>  option_types[:object_point]    +  186,
    :mail_rcpt                   =>  option_types[:object_point]    +  187,
    :ftp_use_pret                =>  option_types[:long]            +  188,
    :rtsp_request                =>  option_types[:long]            +  189,
    :rtsp_session_id             =>  option_types[:object_point]    +  190,
    :rtsp_stream_uri             =>  option_types[:object_point]    +  191,
    :rtsp_transport              =>  option_types[:object_point]    +  192,
    :rtsp_client_cseq            =>  option_types[:long]            +  193,
    :rtsp_server_cseq            =>  option_types[:long]            +  194,
    :interleavedata              =>  option_types[:object_point]    +  195,
    :interleavefunction          =>  option_types[:function_point]  +  196,
    :wildcardmatch               =>  option_types[:long]            +  197,
    :chunk_bgn_function          =>  option_types[:function_point]  +  198,
    :chunk_end_function          =>  option_types[:function_point]  +  199,
    :fnmatch_function            =>  option_types[:function_point]  +  200,
    :chunk_data                  =>  option_types[:object_point]    +  201,
    :fnmatch_data                =>  option_types[:object_point]    +  202,
    :resolve                     =>  option_types[:object_point]    +  203,
    :tlsauth_username            =>  option_types[:object_point]    +  204,
    :tlsauth_password            =>  option_types[:object_point]    +  205,
    :tlsauth_type                =>  option_types[:object_point]    +  206,
    :transfer_encoding           =>  option_types[:long]            +  207,
    :closesocketfunction         =>  option_types[:function_point]  +  208,
    :closesocketdata             =>  option_types[:object_point]    +  209,
    :gssapi_delegation           =>  option_types[:long]            +  210,
    :dns_servers                 =>  option_types[:object_point]    +  211,
    :accepttimeout_ms            =>  option_types[:long]            +  212,
    :tcp_keepalive               =>  option_types[:long]            +  213,
    :tcp_keepidle                =>  option_types[:long]            +  214,
    :tcp_keepintvl               =>  option_types[:long]            +  215,
    :ssl_options                 =>  option_types[:long]            +  216,
    :mail_auth                   =>  option_types[:object_point]    +  217
  }
end

#multi_optionsObject



28
29
30
31
32
33
34
35
36
37
# File 'lib/ethon/curls/options.rb', line 28

def multi_options
  {
    :socketfunction  =>  option_types[:function_point]  +  1,
    :socketdata      =>  option_types[:object_point]    +  2,
    :pipelining      =>  option_types[:long]            +  3,
    :timerfunction   =>  option_types[:function_point]  +  4,
    :timerdata       =>  option_types[:object_point]    +  5,
    :maxconnects     =>  option_types[:long]            +  6
  }
end

#option_typesObject

:nodoc:



17
18
19
20
21
22
23
24
# File 'lib/ethon/curls/options.rb', line 17

def option_types
  {
    :long => 0,
    :object_point => 10000,
    :function_point => 20000,
    :off_t => 30000
  }
end

#set_option(option, value, handle, type = :easy) ⇒ Object

Sets appropriate option for easy, depending on value type.



9
10
11
12
13
14
# File 'lib/ethon/curls/options.rb', line 9

def set_option(option, value, handle, type = :easy)
  return unless value

  name = "#{type}_setopt_#{value.class.to_s.downcase.delete(':')}"
  send(name, handle, option, value)
end