replace SSLVERIFYHOST_EXISTENCE with SSLVERIFYHOST_HOSTNAME for new libcurl
[ocurl.git] / curl.ml
blob3d8fc69108e75f041da841f9aa08339db9ae9e4c
1 (*
2 * curl.ml
4 * Copyright (c) 2003-2008, Lars Nilsson, <lars@quantumchamaeleon.com>
5 * Copyright (c) 2009, ygrek, <ygrek@autistici.org>
6 *)
8 type t
10 type curlCode =
11 | CURLE_OK
12 | CURLE_UNSUPPORTED_PROTOCOL
13 | CURLE_FAILED_INIT
14 | CURLE_URL_MALFORMAT
15 | CURLE_URL_MALFORMAT_USER
16 | CURLE_COULDNT_RESOLVE_PROXY
17 | CURLE_COULDNT_RESOLVE_HOST
18 | CURLE_COULDNT_CONNECT
19 | CURLE_FTP_WEIRD_SERVER_REPLY
20 | CURLE_FTP_ACCESS_DENIED
21 | CURLE_FTP_USER_PASSWORD_INCORRECT
22 | CURLE_FTP_WEIRD_PASS_REPLY
23 | CURLE_FTP_WEIRD_USER_REPLY
24 | CURLE_FTP_WEIRD_PASV_REPLY
25 | CURLE_FTP_WEIRD_227_FORMAT
26 | CURLE_FTP_CANT_GET_HOST
27 | CURLE_FTP_CANT_RECONNECT
28 | CURLE_FTP_COULDNT_SET_BINARY
29 | CURLE_PARTIAL_FILE
30 | CURLE_FTP_COULDNT_RETR_FILE
31 | CURLE_FTP_WRITE_ERROR
32 | CURLE_FTP_QUOTE_ERROR
33 | CURLE_HTTP_NOT_FOUND
34 | CURLE_WRITE_ERROR
35 | CURLE_MALFORMAT_USER
36 | CURLE_FTP_COULDNT_STOR_FILE
37 | CURLE_READ_ERROR
38 | CURLE_OUT_OF_MEMORY
39 | CURLE_OPERATION_TIMEOUTED
40 | CURLE_FTP_COULDNT_SET_ASCII
41 | CURLE_FTP_PORT_FAILED
42 | CURLE_FTP_COULDNT_USE_REST
43 | CURLE_FTP_COULDNT_GET_SIZE
44 | CURLE_HTTP_RANGE_ERROR
45 | CURLE_HTTP_POST_ERROR
46 | CURLE_SSL_CONNECT_ERROR
47 | CURLE_FTP_BAD_DOWNLOAD_RESUME
48 | CURLE_FILE_COULDNT_READ_FILE
49 | CURLE_LDAP_CANNOT_BIND
50 | CURLE_LDAP_SEARCH_FAILED
51 | CURLE_LIBRARY_NOT_FOUND
52 | CURLE_FUNCTION_NOT_FOUND
53 | CURLE_ABORTED_BY_CALLBACK
54 | CURLE_BAD_FUNCTION_ARGUMENT
55 | CURLE_BAD_CALLING_ORDER
56 | CURLE_HTTP_PORT_FAILED
57 | CURLE_BAD_PASSWORD_ENTERED
58 | CURLE_TOO_MANY_REDIRECTS
59 | CURLE_UNKNOWN_TELNET_OPTION
60 | CURLE_TELNET_OPTION_SYNTAX
61 | CURLE_OBSOLETE
62 | CURLE_SSL_PEER_CERTIFICATE
63 | CURLE_GOT_NOTHING
64 | CURLE_SSL_ENGINE_NOTFOUND
65 | CURLE_SSL_ENGINE_SETFAILED
66 | CURLE_SEND_ERROR
67 | CURLE_RECV_ERROR
68 | CURLE_SHARE_IN_USE
69 | CURLE_SSL_CERTPROBLEM
70 | CURLE_SSL_CIPHER
71 | CURLE_SSL_CACERT
72 | CURLE_BAD_CONTENT_ENCODING
73 | CURLE_LDAP_INVALID_URL
74 | CURLE_FILESIZE_EXCEEDED
75 | CURLE_USE_SSL_FAILED
76 | CURLE_SEND_FAIL_REWIND
77 | CURLE_SSL_ENGINE_INITFAILED
78 | CURLE_LOGIN_DENIED
79 | CURLE_TFTP_NOTFOUND
80 | CURLE_TFTP_PERM
81 | CURLE_REMOTE_DISK_FULL
82 | CURLE_TFTP_ILLEGAL
83 | CURLE_TFTP_UNKNOWNID
84 | CURLE_REMOTE_FILE_EXISTS
85 | CURLE_TFTP_NOSUCHUSER
86 | CURLE_CONV_FAILED
87 | CURLE_CONV_REQD
88 | CURLE_SSL_CACERT_BADFILE
89 | CURLE_REMOTE_FILE_NOT_FOUND
90 | CURLE_SSH
91 | CURLE_SSL_SHUTDOWN_FAILED
92 | CURLE_AGAIN
94 exception CurlException of (curlCode * int * string)
96 type curlNETRCOption =
97 | CURL_NETRC_OPTIONAL
98 | CURL_NETRC_IGNORED
99 | CURL_NETRC_REQUIRED
101 type curlEncoding =
102 | CURL_ENCODING_NONE
103 | CURL_ENCODING_DEFLATE
104 | CURL_ENCODING_GZIP
105 | CURL_ENCODING_ANY
107 type curlContentType =
108 | DEFAULT
109 | CONTENTTYPE of string
111 type curlHTTPPost =
112 | CURLFORM_CONTENT of string * string * curlContentType
113 | CURLFORM_FILECONTENT of string * string * curlContentType
114 | CURLFORM_FILE of string * string * curlContentType
115 | CURLFORM_BUFFER of string * string * string * curlContentType
118 type curlHTTPPost =
119 | CURLFORM_COPYNAME of string
120 | CURLFORM_PTRNAME of string
121 | CURLFORM_NAMELENGTH of int
122 | CURLFORM_COPYCONTENTS of string
123 | CURLFORM_PTRCONTENTS of string
124 | CURLFORM_FILE of string
125 | CURLFORM_FILECONTENT of string
126 | CURLFORM_CONTENTSLENGTH of int
127 | CURLFORM_CONTENTTYPE of string
130 type curlTimeCondition =
131 | TIMECOND_IFMODSINCE
132 | TIMECOND_IFUNMODSINCE
134 type curlKRB4Level =
135 | KRB4_NONE
136 | KRB4_CLEAR
137 | KRB4_SAFE
138 | KRB4_CONFIDENTIAL
139 | KRB4_PRIVATE
141 type curlClosePolicy =
142 | CLOSEPOLICY_OLDEST
143 | CLOSEPOLICY_LEAST_RECENTLY_USED
145 type curlSSLVerifyHost =
146 | SSLVERIFYHOST_NONE
147 | SSLVERIFYHOST_EXISTENCE
148 | SSLVERIFYHOST_HOSTNAME
150 type curlHTTPVersion =
151 | HTTP_VERSION_NONE
152 | HTTP_VERSION_1_0
153 | HTTP_VERSION_1_1
155 type curlDebugType =
156 | DEBUGTYPE_TEXT
157 | DEBUGTYPE_HEADER_IN
158 | DEBUGTYPE_HEADER_OUT
159 | DEBUGTYPE_DATA_IN
160 | DEBUGTYPE_DATA_OUT
161 | DEBUGTYPE_END
163 type curlAuth =
164 | CURLAUTH_BASIC
165 | CURLAUTH_DIGEST
166 | CURLAUTH_GSSNEGOTIATE
167 | CURLAUTH_NTLM
168 | CURLAUTH_ANY
169 | CURLAUTH_ANYSAFE
171 type curlIPResolve =
172 | IPRESOLVE_WHATEVER
173 | IPRESOLVE_V4
174 | IPRESOLVE_V6
176 type curlFTPSSL =
177 | FTPSSL_NONE
178 | FTPSSL_TRY
179 | FTPSSL_CONTROL
180 | FTPSSL_ALL
182 type curlFTPSSLAuth =
183 | FTPAUTH_DEFAULT
184 | FTPAUTH_SSL
185 | FTPAUTH_TLS
187 type curlIOCmd =
188 | IOCMD_NOP
189 | IOCMD_RESTARTREAD
191 type curlIOErr =
192 | IOE_OK
193 | IOE_UNKNOWNCMD
194 | IOE_FAILRESTART
196 type curlFTPMethod =
197 | FTPMETHOD_DEFAULT
198 | FTPMETHOD_MULTICWD
199 | FTPMETHOD_NOCWD
200 | FTPMETHOD_SINGLECWD
202 type curlSSHAuthTypes =
203 | SSHAUTH_ANY
204 | SSHAUTH_PUBLICKEY
205 | SSHAUTH_PASSWORD
206 | SSHAUTH_HOST
207 | SSHAUTH_KEYBOARD
209 type curlFTPSSLCCC =
210 | FTPSSL_CCC_NONE
211 | FTPSSL_CCC_PASSIVE
212 | FTPSSL_CCC_ACTIVE
214 type curlSeek =
215 | SEEK_SET
216 | SEEK_CUR
217 | SEEK_END
219 type curlProxyType =
220 | CURLPROXY_HTTP
221 | CURLPROXY_HTTP_1_0 (** added in 7.19.4 *)
222 | CURLPROXY_SOCKS4 (** added in 7.15.2 *)
223 | CURLPROXY_SOCKS5
224 | CURLPROXY_SOCKS4A (** added in 7.18.0 *)
225 | CURLPROXY_SOCKS5_HOSTNAME (** added in 7.18.0 *)
227 (** Protocols to enable (via CURLOPT_PROTOCOLS and CURLOPT_REDIR_PROTOCOLS) *)
228 type curlProto =
229 | CURLPROTO_ALL (** enable everything *)
230 | CURLPROTO_HTTP
231 | CURLPROTO_HTTPS
232 | CURLPROTO_FTP
233 | CURLPROTO_FTPS
234 | CURLPROTO_SCP
235 | CURLPROTO_SFTP
236 | CURLPROTO_TELNET
237 | CURLPROTO_LDAP
238 | CURLPROTO_LDAPS
239 | CURLPROTO_DICT
240 | CURLPROTO_FILE
241 | CURLPROTO_TFTP
242 | CURLPROTO_IMAP
243 | CURLPROTO_IMAPS
244 | CURLPROTO_POP3
245 | CURLPROTO_POP3S
246 | CURLPROTO_SMTP
247 | CURLPROTO_SMTPS
248 | CURLPROTO_RTSP
249 | CURLPROTO_RTMP
250 | CURLPROTO_RTMPT
251 | CURLPROTO_RTMPE
252 | CURLPROTO_RTMPTE
253 | CURLPROTO_RTMPS
254 | CURLPROTO_RTMPTS
255 | CURLPROTO_GOPHER
257 type curlOption =
258 | CURLOPT_WRITEFUNCTION of (string -> int)
259 | CURLOPT_READFUNCTION of (int -> string)
260 | CURLOPT_INFILESIZE of int
261 | CURLOPT_URL of string
262 | CURLOPT_PROXY of string
263 | CURLOPT_PROXYPORT of int
264 | CURLOPT_HTTPPROXYTUNNEL of bool
265 | CURLOPT_VERBOSE of bool
266 | CURLOPT_HEADER of bool
267 | CURLOPT_NOPROGRESS of bool
268 | CURLOPT_NOSIGNAL of bool
269 | CURLOPT_NOBODY of bool
270 | CURLOPT_FAILONERROR of bool
271 | CURLOPT_UPLOAD of bool
272 | CURLOPT_POST of bool
273 | CURLOPT_FTPLISTONLY of bool
274 | CURLOPT_FTPAPPEND of bool
275 | CURLOPT_NETRC of curlNETRCOption
276 | CURLOPT_ENCODING of curlEncoding
277 | CURLOPT_FOLLOWLOCATION of bool
278 | CURLOPT_TRANSFERTEXT of bool
279 | CURLOPT_PUT of bool
280 | CURLOPT_USERPWD of string
281 | CURLOPT_PROXYUSERPWD of string
282 | CURLOPT_RANGE of string
283 | CURLOPT_ERRORBUFFER of string ref
284 | CURLOPT_TIMEOUT of int
285 | CURLOPT_POSTFIELDS of string
286 | CURLOPT_POSTFIELDSIZE of int
287 | CURLOPT_REFERER of string
288 | CURLOPT_USERAGENT of string
289 | CURLOPT_FTPPORT of string
290 | CURLOPT_LOWSPEEDLIMIT of int
291 | CURLOPT_LOWSPEEDTIME of int
292 | CURLOPT_RESUMEFROM of int
293 | CURLOPT_COOKIE of string
294 | CURLOPT_HTTPHEADER of string list
295 | CURLOPT_HTTPPOST of curlHTTPPost list
296 | CURLOPT_SSLCERT of string
297 | CURLOPT_SSLCERTTYPE of string
298 | CURLOPT_SSLCERTPASSWD of string
299 | CURLOPT_SSLKEY of string
300 | CURLOPT_SSLKEYTYPE of string
301 | CURLOPT_SSLKEYPASSWD of string
302 | CURLOPT_SSLENGINE of string
303 | CURLOPT_SSLENGINEDEFAULT of bool
304 | CURLOPT_CRLF of bool
305 | CURLOPT_QUOTE of string list
306 | CURLOPT_POSTQUOTE of string list
307 | CURLOPT_HEADERFUNCTION of (string -> int)
308 | CURLOPT_COOKIEFILE of string
309 | CURLOPT_SSLVERSION of int
310 | CURLOPT_TIMECONDITION of curlTimeCondition
311 | CURLOPT_TIMEVALUE of int32
312 | CURLOPT_CUSTOMREQUEST of string
313 | CURLOPT_STDERR (* UNIMPLEMENTED *)
314 | CURLOPT_INTERFACE of string
315 | CURLOPT_KRB4LEVEL of curlKRB4Level
316 | CURLOPT_PROGRESSFUNCTION of (float -> float -> float -> float -> bool)
317 | CURLOPT_SSLVERIFYPEER of bool
318 | CURLOPT_CAINFO of string
319 | CURLOPT_CAPATH of string
320 | CURLOPT_FILETIME of bool
321 | CURLOPT_MAXREDIRS of int
322 | CURLOPT_MAXCONNECTS of int
323 | CURLOPT_CLOSEPOLICY of curlClosePolicy
324 | CURLOPT_FRESHCONNECT of bool
325 | CURLOPT_FORBIDREUSE of bool
326 | CURLOPT_RANDOMFILE of string
327 | CURLOPT_EGDSOCKET of string
328 | CURLOPT_CONNECTTIMEOUT of int
329 | CURLOPT_HTTPGET of bool
330 | CURLOPT_SSLVERIFYHOST of curlSSLVerifyHost
331 | CURLOPT_COOKIEJAR of string
332 | CURLOPT_SSLCIPHERLIST of string
333 | CURLOPT_HTTPVERSION of curlHTTPVersion
334 | CURLOPT_FTPUSEEPSV of bool
335 | CURLOPT_DNSCACHETIMEOUT of int
336 | CURLOPT_DNSUSEGLOBALCACHE of bool
337 | CURLOPT_DEBUGFUNCTION of (t -> curlDebugType -> string -> unit)
338 | CURLOPT_PRIVATE of string
339 | CURLOPT_HTTP200ALIASES of string list
340 | CURLOPT_UNRESTRICTEDAUTH of bool
341 | CURLOPT_FTPUSEEPRT of bool
342 | CURLOPT_HTTPAUTH of curlAuth list
343 | CURLOPT_FTPCREATEMISSINGDIRS of bool
344 | CURLOPT_PROXYAUTH of curlAuth list
345 | CURLOPT_FTPRESPONSETIMEOUT of int
346 | CURLOPT_IPRESOLVE of curlIPResolve
347 | CURLOPT_MAXFILESIZE of int32
348 | CURLOPT_INFILESIZELARGE of int64
349 | CURLOPT_RESUMEFROMLARGE of int64
350 | CURLOPT_MAXFILESIZELARGE of int64
351 | CURLOPT_NETRCFILE of string
352 | CURLOPT_FTPSSL of curlFTPSSL
353 | CURLOPT_POSTFIELDSIZELARGE of int64
354 | CURLOPT_TCPNODELAY of bool
355 | CURLOPT_FTPSSLAUTH of curlFTPSSLAuth
356 | CURLOPT_IOCTLFUNCTION of (t -> curlIOCmd -> curlIOErr)
357 | CURLOPT_FTPACCOUNT of string
358 | CURLOPT_COOKIELIST of string
359 | CURLOPT_IGNORECONTENTLENGTH of bool
360 | CURLOPT_FTPSKIPPASVIP of bool
361 | CURLOPT_FTPFILEMETHOD of curlFTPMethod
362 | CURLOPT_LOCALPORT of int
363 | CURLOPT_LOCALPORTRANGE of int
364 | CURLOPT_CONNECTONLY of bool
365 | CURLOPT_MAXSENDSPEEDLARGE of int64
366 | CURLOPT_MAXRECVSPEEDLARGE of int64
367 | CURLOPT_FTPALTERNATIVETOUSER of string
368 | CURLOPT_SSLSESSIONIDCACHE of bool
369 | CURLOPT_SSHAUTHTYPES of curlSSHAuthTypes list
370 | CURLOPT_SSHPUBLICKEYFILE of string
371 | CURLOPT_SSHPRIVATEKEYFILE of string
372 | CURLOPT_FTPSSLCCC of curlFTPSSLCCC
373 | CURLOPT_TIMEOUTMS of int
374 | CURLOPT_CONNECTTIMEOUTMS of int
375 | CURLOPT_HTTPTRANSFERDECODING of bool
376 | CURLOPT_HTTPCONTENTDECODING of bool
377 | CURLOPT_NEWFILEPERMS of int
378 | CURLOPT_NEWDIRECTORYPERMS of int
379 | CURLOPT_POST301 of bool
380 | CURLOPT_SSHHOSTPUBLICKEYMD5 of string
381 | CURLOPT_COPYPOSTFIELDS of string
382 | CURLOPT_PROXYTRANSFERMODE of bool
383 | CURLOPT_SEEKFUNCTION of (int64 -> curlSeek -> int)
384 | CURLOPT_AUTOREFERER of bool
385 | CURLOPT_OPENSOCKETFUNCTION of (Unix.file_descr -> unit)
386 | CURLOPT_PROXYTYPE of curlProxyType
387 | CURLOPT_PROTOCOLS of curlProto list
388 | CURLOPT_REDIR_PROTOCOLS of curlProto list
389 | CURLOPT_RESOLVE of string list
390 | CURLOPT_DNS_SERVERS of string
392 type initOption =
393 | CURLINIT_GLOBALALL
394 | CURLINIT_GLOBALSSL
395 | CURLINIT_GLOBALWIN32
396 | CURLINIT_GLOBALNOTHING
398 type curlInfo =
399 | CURLINFO_EFFECTIVE_URL
400 | CURLINFO_HTTP_CODE
401 | CURLINFO_RESPONSE_CODE
402 | CURLINFO_TOTAL_TIME
403 | CURLINFO_NAMELOOKUP_TIME
404 | CURLINFO_CONNECT_TIME
405 | CURLINFO_PRETRANSFER_TIME
406 | CURLINFO_SIZE_UPLOAD
407 | CURLINFO_SIZE_DOWNLOAD
408 | CURLINFO_SPEED_DOWNLOAD
409 | CURLINFO_SPEED_UPLOAD
410 | CURLINFO_HEADER_SIZE
411 | CURLINFO_REQUEST_SIZE
412 | CURLINFO_SSL_VERIFYRESULT
413 | CURLINFO_FILETIME
414 | CURLINFO_CONTENT_LENGTH_DOWNLOAD
415 | CURLINFO_CONTENT_LENGTH_UPLOAD
416 | CURLINFO_STARTTRANSFER_TIME
417 | CURLINFO_CONTENT_TYPE
418 | CURLINFO_REDIRECT_TIME
419 | CURLINFO_REDIRECT_COUNT
420 | CURLINFO_PRIVATE
421 | CURLINFO_HTTP_CONNECTCODE
422 | CURLINFO_HTTPAUTH_AVAIL
423 | CURLINFO_PROXYAUTH_AVAIL
424 | CURLINFO_OS_ERRNO
425 | CURLINFO_NUM_CONNECTS
426 | CURLINFO_SSL_ENGINES
427 | CURLINFO_COOKIELIST
428 | CURLINFO_LASTSOCKET
429 | CURLINFO_FTP_ENTRY_PATH
430 | CURLINFO_REDIRECT_URL
431 | CURLINFO_PRIMARY_IP
433 type curlInfoResult =
434 | CURLINFO_String of string
435 | CURLINFO_Long of int
436 | CURLINFO_Double of float
437 | CURLINFO_StringList of string list
439 external helper_global_init : initOption -> unit = "helper_curl_global_init"
440 external helper_global_cleanup : unit -> unit = "helper_curl_global_cleanup"
441 external helper_init : unit -> t = "helper_curl_easy_init"
442 external helper_duphandle : t -> t = "helper_curl_easy_duphandle"
443 external helper_setopt : t -> curlOption -> unit = "helper_curl_easy_setopt"
444 external helper_perform : t -> unit = "helper_curl_easy_perform"
445 external helper_cleanup : t -> unit = "helper_curl_easy_cleanup"
446 external helper_getinfo : t -> curlInfo -> curlInfoResult = "helper_curl_easy_getinfo"
447 external helper_escape : string -> string = "helper_curl_escape"
448 external helper_unescape : string -> string = "helper_curl_unescape"
449 external helper_getdate : string -> float -> float = "helper_curl_getdate"
450 external helper_version : unit -> string = "helper_curl_version"
452 let init () =
453 helper_init ()
455 external reset : t -> unit = "helper_curl_easy_reset"
457 let duphandle conn =
458 helper_duphandle conn
460 let setopt conn option =
461 helper_setopt conn option
463 let perform conn =
464 helper_perform conn
466 let cleanup conn =
467 helper_cleanup conn
469 let getinfo conn =
470 helper_getinfo conn
472 let global_init initOption =
473 helper_global_init initOption
475 let global_cleanup () =
476 helper_global_cleanup ()
478 let escape str =
479 helper_escape str
481 let unescape str =
482 helper_unescape str
484 let getdate str now =
485 helper_getdate str now
487 let version () =
488 helper_version ()
490 type version_info = {
491 version : string;
492 number : int * int * int;
493 host : string;
494 features : int;
495 ssl_version : string option;
496 libz_version : string option;
497 protocols : string list;
500 external version_info : unit -> version_info = "caml_curl_version_info"
502 external strerror : curlCode -> string = "helper_curl_easy_strerror"
503 let errno : curlCode -> int = Obj.magic
505 let set_writefunction conn closure =
506 setopt conn (CURLOPT_WRITEFUNCTION closure)
508 let set_readfunction conn closure =
509 setopt conn (CURLOPT_READFUNCTION closure)
511 let set_infilesize conn size =
512 setopt conn (CURLOPT_INFILESIZE size)
514 let set_url conn url =
515 setopt conn (CURLOPT_URL url)
517 let set_proxy conn proxy =
518 setopt conn (CURLOPT_PROXY proxy)
520 let set_proxyport conn proxyport =
521 setopt conn (CURLOPT_PROXYPORT proxyport)
523 let set_httpproxytunnel conn flag =
524 setopt conn (CURLOPT_HTTPPROXYTUNNEL flag)
526 let set_verbose conn flag =
527 setopt conn (CURLOPT_VERBOSE flag)
529 let set_header conn flag =
530 setopt conn (CURLOPT_HEADER flag)
532 let set_noprogress conn flag =
533 setopt conn (CURLOPT_NOPROGRESS flag)
535 let set_nosignal conn flag =
536 setopt conn (CURLOPT_NOSIGNAL flag)
538 let set_nobody conn flag =
539 setopt conn (CURLOPT_NOBODY flag)
541 let set_failonerror conn flag =
542 setopt conn (CURLOPT_FAILONERROR flag)
544 let set_upload conn flag =
545 setopt conn (CURLOPT_UPLOAD flag)
547 let set_post conn flag =
548 setopt conn (CURLOPT_POST flag)
550 let set_ftplistonly conn flag =
551 setopt conn (CURLOPT_FTPLISTONLY flag)
553 let set_ftpappend conn flag =
554 setopt conn (CURLOPT_FTPAPPEND flag)
556 let set_netrc conn netrc =
557 setopt conn (CURLOPT_NETRC netrc)
559 let set_encoding conn encoding =
560 setopt conn (CURLOPT_ENCODING encoding)
562 let set_followlocation conn flag =
563 setopt conn (CURLOPT_FOLLOWLOCATION flag)
565 let set_transfertext conn flag =
566 setopt conn (CURLOPT_TRANSFERTEXT flag)
568 let set_put conn flag =
569 setopt conn (CURLOPT_PUT flag)
571 let set_userpwd conn userpwd =
572 setopt conn (CURLOPT_USERPWD userpwd)
574 let set_proxyuserpwd conn proxyuserpwd =
575 setopt conn (CURLOPT_PROXYUSERPWD proxyuserpwd)
577 let set_range conn range =
578 setopt conn (CURLOPT_RANGE range)
580 let set_errorbuffer conn errorbuffer =
581 setopt conn (CURLOPT_ERRORBUFFER errorbuffer)
583 let set_timeout conn timeout =
584 setopt conn (CURLOPT_TIMEOUT timeout)
586 let set_postfields conn postfields =
587 setopt conn (CURLOPT_POSTFIELDS postfields)
589 let set_postfieldsize conn postfieldsize =
590 setopt conn (CURLOPT_POSTFIELDSIZE postfieldsize)
592 let set_referer conn referer =
593 setopt conn (CURLOPT_REFERER referer)
595 let set_useragent conn useragent =
596 setopt conn (CURLOPT_USERAGENT useragent)
598 let set_ftpport conn ftpport =
599 setopt conn (CURLOPT_FTPPORT ftpport)
601 let set_lowspeedlimit conn lowspeedlimit =
602 setopt conn (CURLOPT_LOWSPEEDLIMIT lowspeedlimit)
604 let set_lowspeedtime conn lowspeedtime =
605 setopt conn (CURLOPT_LOWSPEEDTIME lowspeedtime)
607 let set_resumefrom conn resumefrom =
608 setopt conn (CURLOPT_RESUMEFROM resumefrom)
610 let set_cookie conn cookie =
611 setopt conn (CURLOPT_COOKIE cookie)
613 let set_httpheader conn httpheader =
614 setopt conn (CURLOPT_HTTPHEADER httpheader)
616 let set_httppost conn httppost =
617 setopt conn (CURLOPT_HTTPPOST httppost)
619 let set_sslcert conn sslcert =
620 setopt conn (CURLOPT_SSLCERT sslcert)
622 let set_sslcerttype conn sslcerttype =
623 setopt conn (CURLOPT_SSLCERTTYPE sslcerttype)
625 let set_sslcertpasswd conn sslcertpasswd =
626 setopt conn (CURLOPT_SSLCERTPASSWD sslcertpasswd)
628 let set_sslkey conn sslkey =
629 setopt conn (CURLOPT_SSLKEY sslkey)
631 let set_sslkeytype conn sslkeytype =
632 setopt conn (CURLOPT_SSLKEYTYPE sslkeytype)
634 let set_sslkeypasswd conn sslkeypasswd =
635 setopt conn (CURLOPT_SSLKEYPASSWD sslkeypasswd)
637 let set_sslengine conn sslengine =
638 setopt conn (CURLOPT_SSLENGINE sslengine)
640 let set_sslenginedefault conn flag =
641 setopt conn (CURLOPT_SSLENGINEDEFAULT flag)
643 let set_crlf conn flag =
644 setopt conn (CURLOPT_CRLF flag)
646 let set_quote conn quote =
647 setopt conn (CURLOPT_QUOTE quote)
649 let set_postquote conn postquote =
650 setopt conn (CURLOPT_POSTQUOTE postquote)
652 let set_headerfunction conn closure =
653 setopt conn (CURLOPT_HEADERFUNCTION closure)
655 let set_cookiefile conn cookiefile =
656 setopt conn (CURLOPT_COOKIEFILE cookiefile)
658 let set_sslversion conn sslversion =
659 setopt conn (CURLOPT_SSLVERSION sslversion)
661 let set_timecondition conn timecondition =
662 setopt conn (CURLOPT_TIMECONDITION timecondition)
664 let set_timevalue conn timevalue =
665 setopt conn (CURLOPT_TIMEVALUE timevalue)
667 let set_customrequest conn customrequest =
668 setopt conn (CURLOPT_CUSTOMREQUEST customrequest)
670 let set_interface conn interface =
671 setopt conn (CURLOPT_INTERFACE interface)
673 let set_krb4level conn krb4level =
674 setopt conn (CURLOPT_KRB4LEVEL krb4level)
676 let set_progressfunction conn closure =
677 setopt conn (CURLOPT_PROGRESSFUNCTION closure)
679 let set_sslverifypeer conn flag =
680 setopt conn (CURLOPT_SSLVERIFYPEER flag)
682 let set_cainfo conn cainfo =
683 setopt conn (CURLOPT_CAINFO cainfo)
685 let set_capath conn capath =
686 setopt conn (CURLOPT_CAPATH capath)
688 let set_filetime conn filetime =
689 setopt conn (CURLOPT_FILETIME filetime)
691 let set_maxredirs conn maxredirs =
692 setopt conn (CURLOPT_MAXREDIRS maxredirs)
694 let set_maxconnects conn maxconnects =
695 setopt conn (CURLOPT_MAXCONNECTS maxconnects)
697 let set_closepolicy conn closepolicy =
698 setopt conn (CURLOPT_CLOSEPOLICY closepolicy)
700 let set_freshconnect conn flag =
701 setopt conn (CURLOPT_FRESHCONNECT flag)
703 let set_forbidreuse conn flag =
704 setopt conn (CURLOPT_FORBIDREUSE flag)
706 let set_randomfile conn randomfile =
707 setopt conn (CURLOPT_RANDOMFILE randomfile)
709 let set_egdsocket conn egdsocket =
710 setopt conn (CURLOPT_EGDSOCKET egdsocket)
712 let set_connecttimeout conn connecttimeout =
713 setopt conn (CURLOPT_CONNECTTIMEOUT connecttimeout)
715 let set_httpget conn flag =
716 setopt conn (CURLOPT_HTTPGET flag)
718 let set_sslverifyhost conn sslverifyhost =
719 setopt conn (CURLOPT_SSLVERIFYHOST sslverifyhost)
721 let set_cookiejar conn cookiejar =
722 setopt conn (CURLOPT_COOKIEJAR cookiejar)
724 let set_sslcipherlist conn sslcipherlist =
725 setopt conn (CURLOPT_SSLCIPHERLIST sslcipherlist)
727 let set_httpversion conn httpversion =
728 setopt conn (CURLOPT_HTTPVERSION httpversion)
730 let set_ftpuseepsv conn flag =
731 setopt conn (CURLOPT_FTPUSEEPSV flag)
733 let set_dnscachetimeout conn dnscachetimeout =
734 setopt conn (CURLOPT_DNSCACHETIMEOUT dnscachetimeout)
736 let set_dnsuseglobalcache conn flag =
737 setopt conn (CURLOPT_DNSUSEGLOBALCACHE flag)
739 let set_debugfunction conn closure =
740 setopt conn (CURLOPT_DEBUGFUNCTION closure)
742 let set_private conn privateData =
743 setopt conn (CURLOPT_PRIVATE privateData)
745 let set_http200aliases conn aliases =
746 setopt conn (CURLOPT_HTTP200ALIASES aliases)
748 let set_unrestrictedauth conn flag =
749 setopt conn (CURLOPT_UNRESTRICTEDAUTH flag)
751 let set_ftpuseeprt conn flag =
752 setopt conn (CURLOPT_FTPUSEEPRT flag)
754 let set_httpauth conn auth =
755 setopt conn (CURLOPT_HTTPAUTH auth)
757 let set_ftpcreatemissingdirs conn flag =
758 setopt conn (CURLOPT_FTPCREATEMISSINGDIRS flag)
760 let set_proxyauth conn auth =
761 setopt conn (CURLOPT_PROXYAUTH auth)
763 let set_ftpresponsetimeout conn timeout =
764 setopt conn (CURLOPT_FTPRESPONSETIMEOUT timeout)
766 let set_ipresolve conn ipresolve =
767 setopt conn (CURLOPT_IPRESOLVE ipresolve)
769 let set_maxfilesize conn size =
770 setopt conn (CURLOPT_MAXFILESIZE size)
772 let set_infilesizelarge conn size =
773 setopt conn (CURLOPT_INFILESIZELARGE size)
775 let set_resumefromlarge conn size =
776 setopt conn (CURLOPT_RESUMEFROMLARGE size)
778 let set_maxfilesizelarge conn size =
779 setopt conn (CURLOPT_MAXFILESIZELARGE size)
781 let set_netrcfile conn file =
782 setopt conn (CURLOPT_NETRCFILE file)
784 let set_ftpssl conn ftpssl =
785 setopt conn (CURLOPT_FTPSSL ftpssl)
787 let set_postfieldsizelarge conn size =
788 setopt conn (CURLOPT_POSTFIELDSIZELARGE size)
790 let set_tcpnodelay conn flag =
791 setopt conn (CURLOPT_TCPNODELAY flag)
793 let set_ftpsslauth conn auth =
794 setopt conn (CURLOPT_FTPSSLAUTH auth)
796 let set_ioctlfunction conn closure =
797 setopt conn (CURLOPT_IOCTLFUNCTION closure)
799 let set_ftpaccount conn account =
800 setopt conn (CURLOPT_FTPACCOUNT account)
802 let set_cookielist conn cookielist =
803 setopt conn (CURLOPT_COOKIELIST cookielist)
805 let set_ignorecontentlength conn flag =
806 setopt conn (CURLOPT_IGNORECONTENTLENGTH flag)
808 let set_ftpskippasvip conn flag =
809 setopt conn (CURLOPT_FTPSKIPPASVIP flag)
811 let set_ftpfilemethod conn ftpMethod =
812 setopt conn (CURLOPT_FTPFILEMETHOD ftpMethod)
814 let set_localport conn port =
815 setopt conn (CURLOPT_LOCALPORT port)
817 let set_localportrange conn range =
818 setopt conn (CURLOPT_LOCALPORTRANGE range)
820 let set_connectonly conn flag =
821 setopt conn (CURLOPT_CONNECTONLY flag)
823 let set_maxsendspeedlarge conn speed =
824 setopt conn (CURLOPT_MAXSENDSPEEDLARGE speed)
826 let set_maxrecvspeedlarge conn speed =
827 setopt conn (CURLOPT_MAXRECVSPEEDLARGE speed)
829 let set_ftpalternativetouser conn user =
830 setopt conn (CURLOPT_FTPALTERNATIVETOUSER user)
832 let set_sslsessionidcache conn flag =
833 setopt conn (CURLOPT_SSLSESSIONIDCACHE flag)
835 let set_sshauthtypes conn types =
836 setopt conn (CURLOPT_SSHAUTHTYPES types)
838 let set_sshpublickeyfile conn keyfile =
839 setopt conn (CURLOPT_SSHPUBLICKEYFILE keyfile)
841 let set_sshprivatekeyfile conn keyfile =
842 setopt conn (CURLOPT_SSHPRIVATEKEYFILE keyfile)
844 let set_ftpsslccc conn ccc =
845 setopt conn (CURLOPT_FTPSSLCCC ccc)
847 let set_timeoutms conn ms =
848 setopt conn (CURLOPT_TIMEOUTMS ms)
850 let set_connecttimeoutms conn ms =
851 setopt conn (CURLOPT_CONNECTTIMEOUTMS ms)
853 let set_httptransferdecoding conn flag =
854 setopt conn (CURLOPT_HTTPTRANSFERDECODING flag)
856 let set_httpcontentdecoding conn flag =
857 setopt conn (CURLOPT_HTTPCONTENTDECODING flag)
859 let set_newfileperms conn perms =
860 setopt conn (CURLOPT_NEWFILEPERMS perms)
862 let set_newdirectoryperms conn perms =
863 setopt conn (CURLOPT_NEWDIRECTORYPERMS perms)
865 let set_post301 conn flag =
866 setopt conn (CURLOPT_POST301 flag)
868 let set_sshhostpublickeymd5 conn key =
869 setopt conn (CURLOPT_SSHHOSTPUBLICKEYMD5 key)
871 let set_copypostfields conn post =
872 setopt conn (CURLOPT_COPYPOSTFIELDS post)
874 let set_proxytransfermode conn flag =
875 setopt conn (CURLOPT_PROXYTRANSFERMODE flag)
877 let set_seekfunction conn closure =
878 setopt conn (CURLOPT_SEEKFUNCTION closure)
880 let set_autoreferer conn b =
881 setopt conn (CURLOPT_AUTOREFERER b)
883 let set_opensocketfunction conn closure =
884 setopt conn (CURLOPT_OPENSOCKETFUNCTION closure)
886 let set_proxytype conn ptype =
887 setopt conn (CURLOPT_PROXYTYPE ptype)
889 let set_protocols conn l =
890 setopt conn (CURLOPT_PROTOCOLS l)
892 let set_redirprotocols conn l =
893 setopt conn (CURLOPT_REDIR_PROTOCOLS l)
895 let set_resolve conn l_add l_del =
896 let acc = List.fold_left (fun acc (host,port,address) -> (host ^ ":" ^ string_of_int port ^ ":" ^ address) :: acc) [] l_add in
897 let acc = List.fold_left (fun acc (host,port) -> ("-" ^ host ^ ":" ^ string_of_int port) :: acc) acc l_del in
898 setopt conn (CURLOPT_RESOLVE acc)
900 let set_dns_servers conn l =
901 setopt conn (CURLOPT_DNS_SERVERS (String.concat "," l))
903 let get_effectiveurl conn =
904 match (getinfo conn CURLINFO_EFFECTIVE_URL) with
905 | CURLINFO_String s -> s
906 | _ -> ""
908 let get_redirecturl conn =
909 match (getinfo conn CURLINFO_REDIRECT_URL) with
910 | CURLINFO_String s -> s
911 | _ -> ""
913 let get_responsecode conn =
914 match (getinfo conn CURLINFO_HTTP_CODE) with
915 | CURLINFO_Long l -> l
916 | _ -> 0
918 let get_httpcode conn =
919 get_responsecode conn
921 let get_totaltime conn =
922 match (getinfo conn CURLINFO_TOTAL_TIME) with
923 | CURLINFO_Double d -> d
924 | _ -> 0.0
926 let get_namelookuptime conn =
927 match (getinfo conn CURLINFO_NAMELOOKUP_TIME) with
928 | CURLINFO_Double d -> d
929 | _ -> 0.0
931 let get_connecttime conn =
932 match (getinfo conn CURLINFO_CONNECT_TIME) with
933 | CURLINFO_Double d -> d
934 | _ -> 0.0
936 let get_pretransfertime conn =
937 match (getinfo conn CURLINFO_PRETRANSFER_TIME) with
938 | CURLINFO_Double d -> d
939 | _ -> 0.0
941 let get_sizeupload conn =
942 match (getinfo conn CURLINFO_SIZE_UPLOAD) with
943 | CURLINFO_Double d -> d
944 | _ -> 0.0
946 let get_sizedownload conn =
947 match (getinfo conn CURLINFO_SIZE_DOWNLOAD) with
948 | CURLINFO_Double d -> d
949 | _ -> 0.0
951 let get_speeddownload conn =
952 match (getinfo conn CURLINFO_SPEED_DOWNLOAD) with
953 | CURLINFO_Double d -> d
954 | _ -> 0.0
956 let get_speedupload conn =
957 match (getinfo conn CURLINFO_SPEED_UPLOAD) with
958 | CURLINFO_Double d -> d
959 | _ -> 0.0
961 let get_headersize conn =
962 match (getinfo conn CURLINFO_HEADER_SIZE) with
963 | CURLINFO_Long l -> l
964 | _ -> 0
966 let get_requestsize conn =
967 match (getinfo conn CURLINFO_REQUEST_SIZE) with
968 | CURLINFO_Long l -> l
969 | _ -> 0
971 let get_sslverifyresult conn =
972 match (getinfo conn CURLINFO_SSL_VERIFYRESULT) with
973 | CURLINFO_Long l -> l
974 | _ -> 0
976 let get_filetime conn =
977 match (getinfo conn CURLINFO_FILETIME) with
978 | CURLINFO_Double d -> d
979 | _ -> 0.0
981 let get_contentlengthdownload conn =
982 match (getinfo conn CURLINFO_CONTENT_LENGTH_DOWNLOAD) with
983 | CURLINFO_Double d -> d
984 | _ -> 0.0
986 let get_contentlengthupload conn =
987 match (getinfo conn CURLINFO_CONTENT_LENGTH_UPLOAD) with
988 | CURLINFO_Double d -> d
989 | _ -> 0.0
991 let get_starttransfertime conn =
992 match (getinfo conn CURLINFO_STARTTRANSFER_TIME) with
993 | CURLINFO_Double d -> d
994 | _ -> 0.0
996 let get_contenttype conn =
997 match (getinfo conn CURLINFO_CONTENT_TYPE) with
998 | CURLINFO_String s -> s
999 | _ -> ""
1001 let get_redirecttime conn =
1002 match (getinfo conn CURLINFO_REDIRECT_TIME) with
1003 | CURLINFO_Double d -> d
1004 | _ -> 0.0
1006 let get_redirectcount conn =
1007 match (getinfo conn CURLINFO_REDIRECT_COUNT) with
1008 | CURLINFO_Long l -> l
1009 | _ -> 0
1011 let get_private conn =
1012 match (getinfo conn CURLINFO_PRIVATE) with
1013 | CURLINFO_String s -> s
1014 | _ -> ""
1016 let get_httpconnectcode conn =
1017 match (getinfo conn CURLINFO_HTTP_CONNECTCODE) with
1018 | CURLINFO_Long l -> l
1019 | _ -> 0
1021 let generate_auth auth =
1022 let result = ref [] in
1023 if auth land 1 != 0 then result := [CURLAUTH_BASIC];
1024 if auth land 2 != 0 then result := CURLAUTH_DIGEST :: !result;
1025 if auth land 4 != 0 then result := CURLAUTH_GSSNEGOTIATE :: !result;
1026 if auth land 8 != 0 then result := CURLAUTH_NTLM :: !result;
1027 !result
1029 let get_httpauthavail conn =
1030 match (getinfo conn CURLINFO_HTTPAUTH_AVAIL) with
1031 | CURLINFO_Long l -> generate_auth l
1032 | _ -> []
1034 let get_proxyauthavail conn =
1035 match (getinfo conn CURLINFO_PROXYAUTH_AVAIL) with
1036 | CURLINFO_Long l -> generate_auth l
1037 | _ -> []
1039 let get_oserrno conn =
1040 match (getinfo conn CURLINFO_OS_ERRNO) with
1041 | CURLINFO_Long l -> l
1042 | _ -> 0
1044 let get_numconnects conn =
1045 match (getinfo conn CURLINFO_NUM_CONNECTS) with
1046 | CURLINFO_Long l -> l
1047 | _ -> 0
1049 let get_sslengines conn =
1050 match (getinfo conn CURLINFO_SSL_ENGINES) with
1051 | CURLINFO_StringList l -> l
1052 | _ -> []
1054 let get_cookielist conn =
1055 match (getinfo conn CURLINFO_COOKIELIST) with
1056 | CURLINFO_StringList l -> l
1057 | _ -> []
1059 let get_lastsocket conn =
1060 match (getinfo conn CURLINFO_LASTSOCKET) with
1061 | CURLINFO_Long l -> l
1062 | _ -> 0
1064 let get_ftpentrypath conn =
1065 match (getinfo conn CURLINFO_FTP_ENTRY_PATH) with
1066 | CURLINFO_String s -> s
1067 | _ -> ""
1069 let get_primaryip conn =
1070 match (getinfo conn CURLINFO_PRIMARY_IP) with
1071 | CURLINFO_String s -> s
1072 | _ -> ""
1074 let () =
1075 Callback.register_exception "CurlException"
1076 (CurlException (CURLE_OK, 0, ""))
1078 class handle =
1079 object
1080 val conn = init ()
1081 method duphandle = {< conn = duphandle conn >}
1082 method perform = perform conn
1083 method cleanup = cleanup conn
1084 method set_writefunction closure = set_writefunction conn closure
1085 method set_readfunction closure = set_readfunction conn closure
1086 method set_infilesize size = set_infilesize conn size
1087 method set_url url = set_url conn url
1088 method set_proxy proxy = set_proxy conn proxy
1089 method set_proxyport proxyport = set_proxyport conn proxyport
1090 method set_httpproxytunnel flag = set_httpproxytunnel conn flag
1091 method set_verbose flag = set_verbose conn flag
1092 method set_header flag = set_header conn flag
1093 method set_noprogress flag = set_noprogress conn flag
1094 method set_nosignal flag = set_nosignal conn flag
1095 method set_nobody flag = set_nobody conn flag
1096 method set_failonerror flag = set_failonerror conn flag
1097 method set_upload flag = set_upload conn flag
1098 method set_post flag = set_post conn flag
1099 method set_ftplistonly flag = set_ftplistonly conn flag
1100 method set_ftpappend flag = set_ftpappend conn flag
1101 method set_netrc netrc = set_netrc conn netrc
1102 method set_encoding encoding = set_encoding conn encoding
1103 method set_followlocation flag = set_followlocation conn flag
1104 method set_transfertext flag = set_transfertext conn flag
1105 method set_put flag = set_put conn flag
1106 method set_userpwd userpwd = set_userpwd conn userpwd
1107 method set_proxyuserpwd proxyuserpwd = set_proxyuserpwd conn proxyuserpwd
1108 method set_range range = set_range conn range
1109 method set_errorbuffer errorbuffer = set_errorbuffer conn errorbuffer
1110 method set_timeout timeout = set_timeout conn timeout
1111 method set_postfields postfields = set_postfields conn postfields
1112 method set_referer referer = set_referer conn referer
1113 method set_useragent useragent = set_useragent conn useragent
1114 method set_ftpport ftpport = set_ftpport conn ftpport
1115 method set_lowspeedlimit lowspeedlimit = set_lowspeedlimit conn lowspeedlimit
1116 method set_lowspeedtime lowspeedtime = set_lowspeedtime conn lowspeedtime
1117 method set_resumefrom resumefrom = set_resumefrom conn resumefrom
1118 method set_cookie cookie = set_cookie conn cookie
1119 method set_httpheader httpheader = set_httpheader conn httpheader
1120 method set_httppost httppost = set_httppost conn httppost
1121 method set_sslcert sslcert = set_sslcert conn sslcert
1122 method set_sslcerttype sslcerttype = set_sslcerttype conn sslcerttype
1123 method set_sslcertpasswd sslcertpasswd = set_sslcertpasswd conn sslcertpasswd
1124 method set_sslkey sslkey = set_sslkey conn sslkey
1125 method set_sslkeytype sslkeytype = set_sslkeytype conn sslkeytype
1126 method set_sslkeypasswd sslkeypasswd = set_sslkeypasswd conn sslkeypasswd
1127 method set_sslengine sslengine = set_sslengine conn sslengine
1128 method set_sslenginedefault flag = set_sslenginedefault conn flag
1129 method set_crlf flag = set_crlf conn flag
1130 method set_quote quote = set_quote conn quote
1131 method set_postquote postquote = set_postquote conn postquote
1132 method set_headerfunction closure = set_headerfunction conn closure
1133 method set_cookiefile cookiefile = set_cookiefile conn cookiefile
1134 method set_sslversion sslversion = set_sslversion conn sslversion
1135 method set_timecondition timecondition = set_timecondition conn timecondition
1136 method set_timevalue timevalue = set_timevalue conn timevalue
1137 method set_customrequest customrequest = set_customrequest conn customrequest
1138 method set_interface interface = set_interface conn interface
1139 method set_krb4level krb4level = set_krb4level conn krb4level
1140 method set_progressfunction closure = set_progressfunction conn closure
1141 method set_sslverifypeer flag = set_sslverifypeer conn flag
1142 method set_cainfo cainfo = set_cainfo conn cainfo
1143 method set_capath capath = set_capath conn capath
1144 method set_filetime filetime = set_filetime conn filetime
1145 method set_maxredirs maxredirs = set_maxredirs conn maxredirs
1146 method set_maxconnects maxconnects = set_maxconnects conn maxconnects
1147 method set_closepolicy closepolicy = set_closepolicy conn closepolicy
1148 method set_freshconnect flag = set_freshconnect conn flag
1149 method set_forbidreuse flag = set_forbidreuse conn flag
1150 method set_randomfile randomfile = set_randomfile conn randomfile
1151 method set_egdsocket egdsocket = set_egdsocket conn egdsocket
1152 method set_connecttimeout connecttimeout =
1153 set_connecttimeout conn connecttimeout
1154 method set_httpget flag = set_httpget conn flag
1155 method set_sslverifyhost sslverifyhost = set_sslverifyhost conn sslverifyhost
1156 method set_cookiejar cookiejar = set_cookiejar conn cookiejar
1157 method set_sslcipherlist sslcipherlist = set_sslcipherlist conn sslcipherlist
1158 method set_httpversion httpversion = set_httpversion conn httpversion
1159 method set_ftpuseepsv flag = set_ftpuseepsv conn flag
1160 method set_dnscachetimeout dnscachetimeout = set_dnscachetimeout conn dnscachetimeout
1161 method set_dnsuseglobalcache flag = set_dnsuseglobalcache conn flag
1162 method set_debugfunction closure = set_debugfunction conn closure
1163 method set_private privateData = set_private conn privateData
1164 method set_http200aliases aliases = set_http200aliases conn aliases
1165 method set_unrestrictedauth flag = set_unrestrictedauth conn flag
1166 method set_ftpuseeprt flag = set_ftpuseeprt conn flag
1167 method set_httpauth auth = set_httpauth conn auth
1168 method set_ftpcreatemissingdirs flag = set_ftpcreatemissingdirs conn flag
1169 method set_proxyauth auth = set_proxyauth conn auth
1170 method set_ftpresponsetimeout timeout = set_ftpresponsetimeout conn timeout
1171 method set_ipresolve ipresolve = set_ipresolve conn ipresolve
1172 method set_maxfilesize size = set_maxfilesize conn size
1173 method set_infilesizelarge size = set_infilesizelarge conn size
1174 method set_resumefromlarge size = set_resumefromlarge conn size
1175 method set_maxfilesizelarge size = set_maxfilesizelarge conn size
1176 method set_netrcfile file = set_netrcfile conn file
1177 method set_ftpssl ftpssl = set_ftpssl conn ftpssl
1178 method set_postfieldsize size = set_postfieldsize conn size
1179 method set_postfieldsizelarge size = set_postfieldsizelarge conn size
1180 method set_tcpnodelay flag = set_tcpnodelay conn flag
1181 method set_ftpsslauth flag = set_ftpsslauth conn flag
1182 method set_ioctlfunction closure = set_ioctlfunction conn closure
1183 method set_ftpaccount account = set_ftpaccount conn account
1184 method set_cookielist cookielist = set_cookielist conn cookielist
1185 method set_ignorecontentlength flag = set_ignorecontentlength conn flag
1186 method set_ftpskippasvip flag = set_ftpskippasvip conn flag
1187 method set_ftpfilemethod ftpMethod = set_ftpfilemethod conn ftpMethod
1188 method set_localport port = set_localport conn port
1189 method set_localportrange range = set_localportrange conn range
1190 method set_connectonly flag = set_connectonly conn flag
1191 method set_maxsendspeedlarge speed = set_maxsendspeedlarge conn speed
1192 method set_maxrecvspeedlarge speed = set_maxrecvspeedlarge conn speed
1193 method set_ftpalternativetouser user = set_ftpalternativetouser conn user
1194 method set_sslsessionidcache flag = set_sslsessionidcache conn flag
1195 method set_sshauthtypes types = set_sshauthtypes conn types
1196 method set_sshpublickeyfile keyfile = set_sshpublickeyfile conn keyfile
1197 method set_sshprivatekeyfile keyfile = set_sshprivatekeyfile conn keyfile
1198 method set_ftpsslccc ccc = set_ftpsslccc conn ccc
1199 method set_timeoutms ms = set_timeoutms conn ms
1200 method set_connecttimeoutms ms = set_connecttimeoutms conn ms
1201 method set_httptransferdecoding flag = set_httptransferdecoding conn flag
1202 method set_httpcontentdecoding flag = set_httpcontentdecoding conn flag
1203 method set_newfileperms perms = set_newfileperms conn perms
1204 method set_newdirectoryperms perms = set_newdirectoryperms conn perms
1205 method set_post301 flag = set_post301 conn flag
1206 method set_sshhostpublickeymd5 key = set_sshhostpublickeymd5 conn key
1207 method set_copypostfields post = set_copypostfields conn post
1208 method set_proxytransfermode flag = set_proxytransfermode conn flag
1209 method set_seekfunction closure = set_seekfunction conn closure
1210 method set_resolve l = set_resolve conn l
1211 method set_dns_servers l = set_dns_servers conn l
1212 method set_autoreferer b = set_autoreferer conn b
1213 method set_opensocketfunction closure = set_opensocketfunction conn closure
1214 method set_proxytype t = set_proxytype conn t
1216 method get_effectiveurl = get_effectiveurl conn
1217 method get_responsecode = get_responsecode conn
1218 method get_httpcode = get_responsecode conn
1219 method get_totaltime = get_totaltime conn
1220 method get_namelookuptime = get_namelookuptime conn
1221 method get_connecttime = get_connecttime conn
1222 method get_pretransfertime = get_pretransfertime conn
1223 method get_sizeupload = get_sizeupload conn
1224 method get_sizedownload = get_sizedownload conn
1225 method get_speeddownload = get_speeddownload conn
1226 method get_speedupload = get_speedupload conn
1227 method get_headersize = get_headersize conn
1228 method get_requestsize = get_requestsize conn
1229 method get_sslverifyresult = get_sslverifyresult conn
1230 method get_filetime = get_filetime conn
1231 method get_contentlengthdownload = get_contentlengthdownload conn
1232 method get_contentlengthupload = get_contentlengthupload conn
1233 method get_starttransfertime = get_starttransfertime conn
1234 method get_contenttype = get_contenttype conn
1235 method get_redirecttime = get_redirecttime conn
1236 method get_redirectcount = get_redirectcount conn
1237 method get_private = get_private conn
1238 method get_httpconnectcode = get_httpconnectcode conn
1239 method get_httpauthavail = get_httpauthavail conn
1240 method get_proxyauthavail = get_proxyauthavail conn
1241 method get_oserrno = get_oserrno conn
1242 method get_numconnects = get_numconnects conn
1243 method get_sslengines = get_sslengines conn
1244 method get_cookielist = get_cookielist conn
1245 method get_lastsocket = get_lastsocket conn
1246 method get_ftpentrypath = get_ftpentrypath conn
1247 method get_primaryip = get_primaryip conn
1250 module Multi = struct
1252 type mt
1254 external create : unit -> mt = "caml_curl_multi_init"
1255 external add : mt -> t -> unit = "caml_curl_multi_add_handle"
1256 external perform : mt -> int = "caml_curl_multi_perform_all"
1257 external wait : mt -> bool = "caml_curlm_wait_data"
1258 external remove_finished : mt -> (t * curlCode) option = "caml_curlm_remove_finished"
1259 external cleanup : mt -> unit = "caml_curl_multi_cleanup"