+ Multi.timeout, check mcode
[ocurl.git] / curl.ml
blob63d98237a45695fc252a9d2aaa0c9122d074f8be
1 (*
2 * curl.ml
4 * Copyright (c) 2003-2008, Lars Nilsson, <lars@quantumchamaeleon.com>
5 *)
7 type t
9 type curlCode =
10 | CURLE_OK
11 | CURLE_UNSUPPORTED_PROTOCOL
12 | CURLE_FAILED_INIT
13 | CURLE_URL_MALFORMAT
14 | CURLE_URL_MALFORMAT_USER
15 | CURLE_COULDNT_RESOLVE_PROXY
16 | CURLE_COULDNT_RESOLVE_HOST
17 | CURLE_COULDNT_CONNECT
18 | CURLE_FTP_WEIRD_SERVER_REPLY
19 | CURLE_FTP_ACCESS_DENIED
20 | CURLE_FTP_USER_PASSWORD_INCORRECT
21 | CURLE_FTP_WEIRD_PASS_REPLY
22 | CURLE_FTP_WEIRD_USER_REPLY
23 | CURLE_FTP_WEIRD_PASV_REPLY
24 | CURLE_FTP_WEIRD_227_FORMAT
25 | CURLE_FTP_CANT_GET_HOST
26 | CURLE_FTP_CANT_RECONNECT
27 | CURLE_FTP_COULDNT_SET_BINARY
28 | CURLE_PARTIAL_FILE
29 | CURLE_FTP_COULDNT_RETR_FILE
30 | CURLE_FTP_WRITE_ERROR
31 | CURLE_FTP_QUOTE_ERROR
32 | CURLE_HTTP_NOT_FOUND
33 | CURLE_WRITE_ERROR
34 | CURLE_MALFORMAT_USER
35 | CURLE_FTP_COULDNT_STOR_FILE
36 | CURLE_READ_ERROR
37 | CURLE_OUT_OF_MEMORY
38 | CURLE_OPERATION_TIMEOUTED
39 | CURLE_FTP_COULDNT_SET_ASCII
40 | CURLE_FTP_PORT_FAILED
41 | CURLE_FTP_COULDNT_USE_REST
42 | CURLE_FTP_COULDNT_GET_SIZE
43 | CURLE_HTTP_RANGE_ERROR
44 | CURLE_HTTP_POST_ERROR
45 | CURLE_SSL_CONNECT_ERROR
46 | CURLE_FTP_BAD_DOWNLOAD_RESUME
47 | CURLE_FILE_COULDNT_READ_FILE
48 | CURLE_LDAP_CANNOT_BIND
49 | CURLE_LDAP_SEARCH_FAILED
50 | CURLE_LIBRARY_NOT_FOUND
51 | CURLE_FUNCTION_NOT_FOUND
52 | CURLE_ABORTED_BY_CALLBACK
53 | CURLE_BAD_FUNCTION_ARGUMENT
54 | CURLE_BAD_CALLING_ORDER
55 | CURLE_HTTP_PORT_FAILED
56 | CURLE_BAD_PASSWORD_ENTERED
57 | CURLE_TOO_MANY_REDIRECTS
58 | CURLE_UNKNOWN_TELNET_OPTION
59 | CURLE_TELNET_OPTION_SYNTAX
60 | CURLE_OBSOLETE
61 | CURLE_SSL_PEER_CERTIFICATE
62 | CURLE_GOT_NOTHING
63 | CURLE_SSL_ENGINE_NOTFOUND
64 | CURLE_SSL_ENGINE_SETFAILED
65 | CURLE_SEND_ERROR
66 | CURLE_RECV_ERROR
67 | CURLE_SHARE_IN_USE
68 | CURLE_SSL_CERTPROBLEM
69 | CURLE_SSL_CIPHER
70 | CURLE_SSL_CACERT
71 | CURLE_BAD_CONTENT_ENCODING
72 | CURLE_LDAP_INVALID_URL
73 | CURLE_FILESIZE_EXCEEDED
74 | CURLE_FTP_SSL_FAILED
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
105 type curlContentType =
106 | DEFAULT
107 | CONTENTTYPE of string
109 type curlHTTPPost =
110 | CURLFORM_CONTENT of string * string * curlContentType
111 | CURLFORM_FILECONTENT of string * string * curlContentType
112 | CURLFORM_FILE of string * string * curlContentType
113 | CURLFORM_BUFFER of string * string * string * curlContentType
116 type curlHTTPPost =
117 | CURLFORM_COPYNAME of string
118 | CURLFORM_PTRNAME of string
119 | CURLFORM_NAMELENGTH of int
120 | CURLFORM_COPYCONTENTS of string
121 | CURLFORM_PTRCONTENTS of string
122 | CURLFORM_FILE of string
123 | CURLFORM_FILECONTENT of string
124 | CURLFORM_CONTENTSLENGTH of int
125 | CURLFORM_CONTENTTYPE of string
128 type curlTimeCondition =
129 | TIMECOND_IFMODSINCE
130 | TIMECOND_IFUNMODSINCE
132 type curlKRB4Level =
133 | KRB4_NONE
134 | KRB4_CLEAR
135 | KRB4_SAFE
136 | KRB4_CONFIDENTIAL
137 | KRB4_PRIVATE
139 type curlClosePolicy =
140 | CLOSEPOLICY_OLDEST
141 | CLOSEPOLICY_LEAST_RECENTLY_USED
143 type curlSSLVerifyHost =
144 | SSLVERIFYHOST_EXISTENCE
145 | SSLVERIFYHOST_HOSTNAME
147 type curlHTTPVersion =
148 | HTTP_VERSION_NONE
149 | HTTP_VERSION_1_0
150 | HTTP_VERSION_1_1
152 type curlDebugType =
153 | DEBUGTYPE_TEXT
154 | DEBUGTYPE_HEADER_IN
155 | DEBUGTYPE_HEADER_OUT
156 | DEBUGTYPE_DATA_IN
157 | DEBUGTYPE_DATA_OUT
158 | DEBUGTYPE_END
160 type curlAuth =
161 | CURLAUTH_BASIC
162 | CURLAUTH_DIGEST
163 | CURLAUTH_GSSNEGOTIATE
164 | CURLAUTH_NTLM
165 | CURLAUTH_ANY
166 | CURLAUTH_ANYSAFE
168 type curlIPResolve =
169 | IPRESOLVE_WHATEVER
170 | IPRESOLVE_V4
171 | IPRESOLVE_V6
173 type curlFTPSSL =
174 | FTPSSL_NONE
175 | FTPSSL_TRY
176 | FTPSSL_CONTROL
177 | FTPSSL_ALL
179 type curlFTPSSLAuth =
180 | FTPAUTH_DEFAULT
181 | FTPAUTH_SSL
182 | FTPAUTH_TLS
184 type curlIOCmd =
185 | IOCMD_NOP
186 | IOCMD_RESTARTREAD
188 type curlIOErr =
189 | IOE_OK
190 | IOE_UNKNOWNCMD
191 | IOE_FAILRESTART
193 type curlFTPMethod =
194 | FTPMETHOD_DEFAULT
195 | FTPMETHOD_MULTICWD
196 | FTPMETHOD_NOCWD
197 | FTPMETHOD_SINGLECWD
199 type curlSSHAuthTypes =
200 | SSHAUTH_ANY
201 | SSHAUTH_PUBLICKEY
202 | SSHAUTH_PASSWORD
203 | SSHAUTH_HOST
204 | SSHAUTH_KEYBOARD
206 type curlFTPSSLCCC =
207 | FTPSSL_CCC_NONE
208 | FTPSSL_CCC_PASSIVE
209 | FTPSSL_CCC_ACTIVE
211 type curlSeek =
212 | SEEK_SET
213 | SEEK_CUR
214 | SEEK_END
216 type curlOption =
217 | CURLOPT_WRITEFUNCTION of (string -> int)
218 | CURLOPT_READFUNCTION of (int -> string)
219 | CURLOPT_INFILESIZE of int
220 | CURLOPT_URL of string
221 | CURLOPT_PROXY of string
222 | CURLOPT_PROXYPORT of int
223 | CURLOPT_HTTPPROXYTUNNEL of bool
224 | CURLOPT_VERBOSE of bool
225 | CURLOPT_HEADER of bool
226 | CURLOPT_NOPROGRESS of bool
227 | CURLOPT_NOSIGNAL of bool
228 | CURLOPT_NOBODY of bool
229 | CURLOPT_FAILONERROR of bool
230 | CURLOPT_UPLOAD of bool
231 | CURLOPT_POST of bool
232 | CURLOPT_FTPLISTONLY of bool
233 | CURLOPT_FTPAPPEND of bool
234 | CURLOPT_NETRC of curlNETRCOption
235 | CURLOPT_ENCODING of curlEncoding
236 | CURLOPT_FOLLOWLOCATION of bool
237 | CURLOPT_TRANSFERTEXT of bool
238 | CURLOPT_PUT of bool
239 | CURLOPT_USERPWD of string
240 | CURLOPT_PROXYUSERPWD of string
241 | CURLOPT_RANGE of string
242 | CURLOPT_ERRORBUFFER of string ref
243 | CURLOPT_TIMEOUT of int
244 | CURLOPT_POSTFIELDS of string
245 | CURLOPT_POSTFIELDSIZE of int
246 | CURLOPT_REFERER of string
247 | CURLOPT_USERAGENT of string
248 | CURLOPT_FTPPORT of string
249 | CURLOPT_LOWSPEEDLIMIT of int
250 | CURLOPT_LOWSPEEDTIME of int
251 | CURLOPT_RESUMEFROM of int
252 | CURLOPT_COOKIE of string
253 | CURLOPT_HTTPHEADER of string list
254 | CURLOPT_HTTPPOST of curlHTTPPost list
255 | CURLOPT_SSLCERT of string
256 | CURLOPT_SSLCERTTYPE of string
257 | CURLOPT_SSLCERTPASSWD of string
258 | CURLOPT_SSLKEY of string
259 | CURLOPT_SSLKEYTYPE of string
260 | CURLOPT_SSLKEYPASSWD of string
261 | CURLOPT_SSLENGINE of string
262 | CURLOPT_SSLENGINEDEFAULT of bool
263 | CURLOPT_CRLF of bool
264 | CURLOPT_QUOTE of string list
265 | CURLOPT_POSTQUOTE of string list
266 | CURLOPT_HEADERFUNCTION of (string -> int)
267 | CURLOPT_COOKIEFILE of string
268 | CURLOPT_SSLVERSION of int
269 | CURLOPT_TIMECONDITION of curlTimeCondition
270 | CURLOPT_TIMEVALUE of int32
271 | CURLOPT_CUSTOMREQUEST of string
272 | CURLOPT_STDERR (* UNIMPLEMENTED *)
273 | CURLOPT_INTERFACE of string
274 | CURLOPT_KRB4LEVEL of curlKRB4Level
275 | CURLOPT_PROGRESSFUNCTION of (float -> float -> float -> float -> bool)
276 | CURLOPT_SSLVERIFYPEER of bool
277 | CURLOPT_CAINFO of string
278 | CURLOPT_CAPATH of string
279 | CURLOPT_FILETIME of bool
280 | CURLOPT_MAXREDIRS of int
281 | CURLOPT_MAXCONNECTS of int
282 | CURLOPT_CLOSEPOLICY of curlClosePolicy
283 | CURLOPT_FRESHCONNECT of bool
284 | CURLOPT_FORBIDREUSE of bool
285 | CURLOPT_RANDOMFILE of string
286 | CURLOPT_EGDSOCKET of string
287 | CURLOPT_CONNECTTIMEOUT of int
288 | CURLOPT_HTTPGET of bool
289 | CURLOPT_SSLVERIFYHOST of curlSSLVerifyHost
290 | CURLOPT_COOKIEJAR of string
291 | CURLOPT_SSLCIPHERLIST of string
292 | CURLOPT_HTTPVERSION of curlHTTPVersion
293 | CURLOPT_FTPUSEEPSV of bool
294 | CURLOPT_DNSCACHETIMEOUT of int
295 | CURLOPT_DNSUSEGLOBALCACHE of bool
296 | CURLOPT_DEBUGFUNCTION of (t -> curlDebugType -> string -> unit)
297 | CURLOPT_PRIVATE of string
298 | CURLOPT_HTTP200ALIASES of string list
299 | CURLOPT_UNRESTRICTEDAUTH of bool
300 | CURLOPT_FTPUSEEPRT of bool
301 | CURLOPT_HTTPAUTH of curlAuth list
302 | CURLOPT_FTPCREATEMISSINGDIRS of bool
303 | CURLOPT_PROXYAUTH of curlAuth list
304 | CURLOPT_FTPRESPONSETIMEOUT of int
305 | CURLOPT_IPRESOLVE of curlIPResolve
306 | CURLOPT_MAXFILESIZE of int32
307 | CURLOPT_INFILESIZELARGE of int64
308 | CURLOPT_RESUMEFROMLARGE of int64
309 | CURLOPT_MAXFILESIZELARGE of int64
310 | CURLOPT_NETRCFILE of string
311 | CURLOPT_FTPSSL of curlFTPSSL
312 | CURLOPT_POSTFIELDSIZELARGE of int64
313 | CURLOPT_TCPNODELAY of bool
314 | CURLOPT_FTPSSLAUTH of curlFTPSSLAuth
315 | CURLOPT_IOCTLFUNCTION of (t -> curlIOCmd -> curlIOErr)
316 | CURLOPT_FTPACCOUNT of string
317 | CURLOPT_COOKIELIST of string
318 | CURLOPT_IGNORECONTENTLENGTH of bool
319 | CURLOPT_FTPSKIPPASVIP of bool
320 | CURLOPT_FTPFILEMETHOD of curlFTPMethod
321 | CURLOPT_LOCALPORT of int
322 | CURLOPT_LOCALPORTRANGE of int
323 | CURLOPT_CONNECTONLY of bool
324 | CURLOPT_MAXSENDSPEEDLARGE of int64
325 | CURLOPT_MAXRECVSPEEDLARGE of int64
326 | CURLOPT_FTPALTERNATIVETOUSER of string
327 | CURLOPT_SSLSESSIONIDCACHE of bool
328 | CURLOPT_SSHAUTHTYPES of curlSSHAuthTypes list
329 | CURLOPT_SSHPUBLICKEYFILE of string
330 | CURLOPT_SSHPRIVATEKEYFILE of string
331 | CURLOPT_FTPSSLCCC of curlFTPSSLCCC
332 | CURLOPT_TIMEOUTMS of int
333 | CURLOPT_CONNECTTIMEOUTMS of int
334 | CURLOPT_HTTPTRANSFERDECODING of bool
335 | CURLOPT_HTTPCONTENTDECODING of bool
336 | CURLOPT_NEWFILEPERMS of int
337 | CURLOPT_NEWDIRECTORYPERMS of int
338 | CURLOPT_POST301 of bool
339 | CURLOPT_SSHHOSTPUBLICKEYMD5 of string
340 | CURLOPT_COPYPOSTFIELDS of string
341 | CURLOPT_PROXYTRANSFERMODE of bool
342 | CURLOPT_SEEKFUNCTION of (int64 -> curlSeek -> int)
344 type initOption =
345 | CURLINIT_GLOBALALL
346 | CURLINIT_GLOBALSSL
347 | CURLINIT_GLOBALWIN32
348 | CURLINIT_GLOBALNOTHING
350 type curlInfo =
351 | CURLINFO_EFFECTIVE_URL
352 | CURLINFO_HTTP_CODE
353 | CURLINFO_RESPONSE_CODE
354 | CURLINFO_TOTAL_TIME
355 | CURLINFO_NAMELOOKUP_TIME
356 | CURLINFO_CONNECT_TIME
357 | CURLINFO_PRETRANSFER_TIME
358 | CURLINFO_SIZE_UPLOAD
359 | CURLINFO_SIZE_DOWNLOAD
360 | CURLINFO_SPEED_DOWNLOAD
361 | CURLINFO_SPEED_UPLOAD
362 | CURLINFO_HEADER_SIZE
363 | CURLINFO_REQUEST_SIZE
364 | CURLINFO_SSL_VERIFYRESULT
365 | CURLINFO_FILETIME
366 | CURLINFO_CONTENT_LENGTH_DOWNLOAD
367 | CURLINFO_CONTENT_LENGTH_UPLOAD
368 | CURLINFO_STARTTRANSFER_TIME
369 | CURLINFO_CONTENT_TYPE
370 | CURLINFO_REDIRECT_TIME
371 | CURLINFO_REDIRECT_COUNT
372 | CURLINFO_PRIVATE
373 | CURLINFO_HTTP_CONNECTCODE
374 | CURLINFO_HTTPAUTH_AVAIL
375 | CURLINFO_PROXYAUTH_AVAIL
376 | CURLINFO_OS_ERRNO
377 | CURLINFO_NUM_CONNECTS
378 | CURLINFO_SSL_ENGINES
379 | CURLINFO_COOKIELIST
380 | CURLINFO_LASTSOCKET
381 | CURLINFO_FTP_ENTRY_PATH
383 type curlInfoResult =
384 | CURLINFO_String of string
385 | CURLINFO_Long of int
386 | CURLINFO_Double of float
387 | CURLINFO_StringList of string list
389 external helper_global_init : initOption -> unit = "helper_curl_global_init"
390 external helper_global_cleanup : unit -> unit = "helper_curl_global_cleanup"
391 external helper_init : unit -> t = "helper_curl_easy_init"
392 external helper_duphandle : t -> t = "helper_curl_easy_duphandle"
393 external helper_setopt : t -> curlOption -> unit = "helper_curl_easy_setopt"
394 external helper_perform : t -> unit = "helper_curl_easy_perform"
395 external helper_cleanup : t -> unit = "helper_curl_easy_cleanup"
396 external helper_getinfo : t -> curlInfo -> curlInfoResult = "helper_curl_easy_getinfo"
397 external helper_escape : string -> string = "helper_curl_escape"
398 external helper_unescape : string -> string = "helper_curl_unescape"
399 external helper_getdate : string -> float -> float = "helper_curl_getdate"
400 external helper_version : unit -> string = "helper_curl_version"
402 let init () =
403 helper_init ()
405 external reset : t -> unit = "helper_curl_easy_reset"
407 let duphandle conn =
408 helper_duphandle conn
410 let setopt conn option =
411 helper_setopt conn option
413 let perform conn =
414 helper_perform conn
416 let cleanup conn =
417 helper_cleanup conn
419 let getinfo conn =
420 helper_getinfo conn
422 let global_init initOption =
423 helper_global_init initOption
425 let global_cleanup () =
426 helper_global_cleanup ()
428 let escape str =
429 helper_escape str
431 let unescape str =
432 helper_unescape str
434 let getdate str now =
435 helper_getdate str now
437 let version () =
438 helper_version ()
440 let set_writefunction conn closure =
441 setopt conn (CURLOPT_WRITEFUNCTION closure)
443 let set_readfunction conn closure =
444 setopt conn (CURLOPT_READFUNCTION closure)
446 let set_infilesize conn size =
447 setopt conn (CURLOPT_INFILESIZE size)
449 let set_url conn url =
450 setopt conn (CURLOPT_URL url)
452 let set_proxy conn proxy =
453 setopt conn (CURLOPT_PROXY proxy)
455 let set_proxyport conn proxyport =
456 setopt conn (CURLOPT_PROXYPORT proxyport)
458 let set_httpproxytunnel conn flag =
459 setopt conn (CURLOPT_HTTPPROXYTUNNEL flag)
461 let set_verbose conn flag =
462 setopt conn (CURLOPT_VERBOSE flag)
464 let set_header conn flag =
465 setopt conn (CURLOPT_HEADER flag)
467 let set_noprogress conn flag =
468 setopt conn (CURLOPT_NOPROGRESS flag)
470 let set_nosignal conn flag =
471 setopt conn (CURLOPT_NOSIGNAL flag)
473 let set_nobody conn flag =
474 setopt conn (CURLOPT_NOBODY flag)
476 let set_failonerror conn flag =
477 setopt conn (CURLOPT_FAILONERROR flag)
479 let set_upload conn flag =
480 setopt conn (CURLOPT_UPLOAD flag)
482 let set_post conn flag =
483 setopt conn (CURLOPT_POST flag)
485 let set_ftplistonly conn flag =
486 setopt conn (CURLOPT_FTPLISTONLY flag)
488 let set_ftpappend conn flag =
489 setopt conn (CURLOPT_FTPAPPEND flag)
491 let set_netrc conn netrc =
492 setopt conn (CURLOPT_NETRC netrc)
494 let set_encoding conn encoding =
495 setopt conn (CURLOPT_ENCODING encoding)
497 let set_followlocation conn flag =
498 setopt conn (CURLOPT_FOLLOWLOCATION flag)
500 let set_transfertext conn flag =
501 setopt conn (CURLOPT_TRANSFERTEXT flag)
503 let set_put conn flag =
504 setopt conn (CURLOPT_PUT flag)
506 let set_userpwd conn userpwd =
507 setopt conn (CURLOPT_USERPWD userpwd)
509 let set_proxyuserpwd conn proxyuserpwd =
510 setopt conn (CURLOPT_PROXYUSERPWD proxyuserpwd)
512 let set_range conn range =
513 setopt conn (CURLOPT_RANGE range)
515 let set_errorbuffer conn errorbuffer =
516 setopt conn (CURLOPT_ERRORBUFFER errorbuffer)
518 let set_timeout conn timeout =
519 setopt conn (CURLOPT_TIMEOUT timeout)
521 let set_postfields conn postfields =
522 setopt conn (CURLOPT_POSTFIELDS postfields)
524 let set_postfieldsize conn postfieldsize =
525 setopt conn (CURLOPT_POSTFIELDSIZE postfieldsize)
527 let set_referer conn referer =
528 setopt conn (CURLOPT_REFERER referer)
530 let set_useragent conn useragent =
531 setopt conn (CURLOPT_USERAGENT useragent)
533 let set_ftpport conn ftpport =
534 setopt conn (CURLOPT_FTPPORT ftpport)
536 let set_lowspeedlimit conn lowspeedlimit =
537 setopt conn (CURLOPT_LOWSPEEDLIMIT lowspeedlimit)
539 let set_lowspeedtime conn lowspeedtime =
540 setopt conn (CURLOPT_LOWSPEEDTIME lowspeedtime)
542 let set_resumefrom conn resumefrom =
543 setopt conn (CURLOPT_RESUMEFROM resumefrom)
545 let set_cookie conn cookie =
546 setopt conn (CURLOPT_COOKIE cookie)
548 let set_httpheader conn httpheader =
549 setopt conn (CURLOPT_HTTPHEADER httpheader)
551 let set_httppost conn httppost =
552 setopt conn (CURLOPT_HTTPPOST httppost)
554 let set_sslcert conn sslcert =
555 setopt conn (CURLOPT_SSLCERT sslcert)
557 let set_sslcerttype conn sslcerttype =
558 setopt conn (CURLOPT_SSLCERTTYPE sslcerttype)
560 let set_sslcertpasswd conn sslcertpasswd =
561 setopt conn (CURLOPT_SSLCERTPASSWD sslcertpasswd)
563 let set_sslkey conn sslkey =
564 setopt conn (CURLOPT_SSLKEY sslkey)
566 let set_sslkeytype conn sslkeytype =
567 setopt conn (CURLOPT_SSLKEYTYPE sslkeytype)
569 let set_sslkeypasswd conn sslkeypasswd =
570 setopt conn (CURLOPT_SSLKEYPASSWD sslkeypasswd)
572 let set_sslengine conn sslengine =
573 setopt conn (CURLOPT_SSLENGINE sslengine)
575 let set_sslenginedefault conn flag =
576 setopt conn (CURLOPT_SSLENGINEDEFAULT flag)
578 let set_crlf conn flag =
579 setopt conn (CURLOPT_CRLF flag)
581 let set_quote conn quote =
582 setopt conn (CURLOPT_QUOTE quote)
584 let set_postquote conn postquote =
585 setopt conn (CURLOPT_POSTQUOTE postquote)
587 let set_headerfunction conn closure =
588 setopt conn (CURLOPT_HEADERFUNCTION closure)
590 let set_cookiefile conn cookiefile =
591 setopt conn (CURLOPT_COOKIEFILE cookiefile)
593 let set_sslversion conn sslversion =
594 setopt conn (CURLOPT_SSLVERSION sslversion)
596 let set_timecondition conn timecondition =
597 setopt conn (CURLOPT_TIMECONDITION timecondition)
599 let set_timevalue conn timevalue =
600 setopt conn (CURLOPT_TIMEVALUE timevalue)
602 let set_customrequest conn customrequest =
603 setopt conn (CURLOPT_CUSTOMREQUEST customrequest)
605 let set_interface conn interface =
606 setopt conn (CURLOPT_INTERFACE interface)
608 let set_krb4level conn krb4level =
609 setopt conn (CURLOPT_KRB4LEVEL krb4level)
611 let set_progressfunction conn closure =
612 setopt conn (CURLOPT_PROGRESSFUNCTION closure)
614 let set_sslverifypeer conn flag =
615 setopt conn (CURLOPT_SSLVERIFYPEER flag)
617 let set_cainfo conn cainfo =
618 setopt conn (CURLOPT_CAINFO cainfo)
620 let set_capath conn capath =
621 setopt conn (CURLOPT_CAPATH capath)
623 let set_filetime conn filetime =
624 setopt conn (CURLOPT_FILETIME filetime)
626 let set_maxredirs conn maxredirs =
627 setopt conn (CURLOPT_MAXREDIRS maxredirs)
629 let set_maxconnects conn maxconnects =
630 setopt conn (CURLOPT_MAXCONNECTS maxconnects)
632 let set_closepolicy conn closepolicy =
633 setopt conn (CURLOPT_CLOSEPOLICY closepolicy)
635 let set_freshconnect conn flag =
636 setopt conn (CURLOPT_FRESHCONNECT flag)
638 let set_forbidreuse conn flag =
639 setopt conn (CURLOPT_FORBIDREUSE flag)
641 let set_randomfile conn randomfile =
642 setopt conn (CURLOPT_RANDOMFILE randomfile)
644 let set_egdsocket conn egdsocket =
645 setopt conn (CURLOPT_EGDSOCKET egdsocket)
647 let set_connecttimeout conn connecttimeout =
648 setopt conn (CURLOPT_CONNECTTIMEOUT connecttimeout)
650 let set_httpget conn flag =
651 setopt conn (CURLOPT_HTTPGET flag)
653 let set_sslverifyhost conn sslverifyhost =
654 setopt conn (CURLOPT_SSLVERIFYHOST sslverifyhost)
656 let set_cookiejar conn cookiejar =
657 setopt conn (CURLOPT_COOKIEJAR cookiejar)
659 let set_sslcipherlist conn sslcipherlist =
660 setopt conn (CURLOPT_SSLCIPHERLIST sslcipherlist)
662 let set_httpversion conn httpversion =
663 setopt conn (CURLOPT_HTTPVERSION httpversion)
665 let set_ftpuseepsv conn flag =
666 setopt conn (CURLOPT_FTPUSEEPSV flag)
668 let set_dnscachetimeout conn dnscachetimeout =
669 setopt conn (CURLOPT_DNSCACHETIMEOUT dnscachetimeout)
671 let set_dnsuseglobalcache conn flag =
672 setopt conn (CURLOPT_DNSUSEGLOBALCACHE flag)
674 let set_debugfunction conn closure =
675 setopt conn (CURLOPT_DEBUGFUNCTION closure)
677 let set_private conn privateData =
678 setopt conn (CURLOPT_PRIVATE privateData)
680 let set_http200aliases conn aliases =
681 setopt conn (CURLOPT_HTTP200ALIASES aliases)
683 let set_unrestrictedauth conn flag =
684 setopt conn (CURLOPT_UNRESTRICTEDAUTH flag)
686 let set_ftpuseeprt conn flag =
687 setopt conn (CURLOPT_FTPUSEEPRT flag)
689 let set_httpauth conn auth =
690 setopt conn (CURLOPT_HTTPAUTH auth)
692 let set_ftpcreatemissingdirs conn flag =
693 setopt conn (CURLOPT_FTPCREATEMISSINGDIRS flag)
695 let set_proxyauth conn auth =
696 setopt conn (CURLOPT_PROXYAUTH auth)
698 let set_ftpresponsetimeout conn timeout =
699 setopt conn (CURLOPT_FTPRESPONSETIMEOUT timeout)
701 let set_ipresolve conn ipresolve =
702 setopt conn (CURLOPT_IPRESOLVE ipresolve)
704 let set_maxfilesize conn size =
705 setopt conn (CURLOPT_MAXFILESIZE size)
707 let set_infilesizelarge conn size =
708 setopt conn (CURLOPT_INFILESIZELARGE size)
710 let set_resumefromlarge conn size =
711 setopt conn (CURLOPT_RESUMEFROMLARGE size)
713 let set_maxfilesizelarge conn size =
714 setopt conn (CURLOPT_MAXFILESIZELARGE size)
716 let set_netrcfile conn file =
717 setopt conn (CURLOPT_NETRCFILE file)
719 let set_ftpssl conn ftpssl =
720 setopt conn (CURLOPT_FTPSSL ftpssl)
722 let set_postfieldsizelarge conn size =
723 setopt conn (CURLOPT_POSTFIELDSIZELARGE size)
725 let set_tcpnodelay conn flag =
726 setopt conn (CURLOPT_TCPNODELAY flag)
728 let set_ftpsslauth conn auth =
729 setopt conn (CURLOPT_FTPSSLAUTH auth)
731 let set_ioctlfunction conn closure =
732 setopt conn (CURLOPT_IOCTLFUNCTION closure)
734 let set_ftpaccount conn account =
735 setopt conn (CURLOPT_FTPACCOUNT account)
737 let set_cookielist conn cookielist =
738 setopt conn (CURLOPT_COOKIELIST cookielist)
740 let set_ignorecontentlength conn flag =
741 setopt conn (CURLOPT_IGNORECONTENTLENGTH flag)
743 let set_ftpskippasvip conn flag =
744 setopt conn (CURLOPT_FTPSKIPPASVIP flag)
746 let set_ftpfilemethod conn ftpMethod =
747 setopt conn (CURLOPT_FTPFILEMETHOD ftpMethod)
749 let set_localport conn port =
750 setopt conn (CURLOPT_LOCALPORT port)
752 let set_localportrange conn range =
753 setopt conn (CURLOPT_LOCALPORTRANGE range)
755 let set_connectonly conn flag =
756 setopt conn (CURLOPT_CONNECTONLY flag)
758 let set_maxsendspeedlarge conn speed =
759 setopt conn (CURLOPT_MAXSENDSPEEDLARGE speed)
761 let set_maxrecvspeedlarge conn speed =
762 setopt conn (CURLOPT_MAXRECVSPEEDLARGE speed)
764 let set_ftpalternativetouser conn user =
765 setopt conn (CURLOPT_FTPALTERNATIVETOUSER user)
767 let set_sslsessionidcache conn flag =
768 setopt conn (CURLOPT_SSLSESSIONIDCACHE flag)
770 let set_sshauthtypes conn types =
771 setopt conn (CURLOPT_SSHAUTHTYPES types)
773 let set_sshpublickeyfile conn keyfile =
774 setopt conn (CURLOPT_SSHPUBLICKEYFILE keyfile)
776 let set_sshprivatekeyfile conn keyfile =
777 setopt conn (CURLOPT_SSHPRIVATEKEYFILE keyfile)
779 let set_ftpsslccc conn ccc =
780 setopt conn (CURLOPT_FTPSSLCCC ccc)
782 let set_timeoutms conn ms =
783 setopt conn (CURLOPT_TIMEOUTMS ms)
785 let set_connecttimeoutms conn ms =
786 setopt conn (CURLOPT_CONNECTTIMEOUTMS ms)
788 let set_httptransferdecoding conn flag =
789 setopt conn (CURLOPT_HTTPTRANSFERDECODING flag)
791 let set_httpcontentdecoding conn flag =
792 setopt conn (CURLOPT_HTTPCONTENTDECODING flag)
794 let set_newfileperms conn perms =
795 setopt conn (CURLOPT_NEWFILEPERMS perms)
797 let set_newdirectoryperms conn perms =
798 setopt conn (CURLOPT_NEWDIRECTORYPERMS perms)
800 let set_post301 conn flag =
801 setopt conn (CURLOPT_POST301 flag)
803 let set_sshhostpublickeymd5 conn key =
804 setopt conn (CURLOPT_SSHHOSTPUBLICKEYMD5 key)
806 let set_copypostfields conn post =
807 setopt conn (CURLOPT_COPYPOSTFIELDS post)
809 let set_proxytransfermode conn flag =
810 setopt conn (CURLOPT_PROXYTRANSFERMODE flag)
812 let set_seekfunction conn closure =
813 setopt conn (CURLOPT_SEEKFUNCTION closure)
815 let get_effectiveurl conn =
816 match (getinfo conn CURLINFO_EFFECTIVE_URL) with
817 | CURLINFO_String s -> s
818 | _ -> ""
820 let get_responsecode conn =
821 match (getinfo conn CURLINFO_HTTP_CODE) with
822 | CURLINFO_Long l -> l
823 | _ -> 0
825 let get_httpcode conn =
826 get_responsecode conn
828 let get_totaltime conn =
829 match (getinfo conn CURLINFO_TOTAL_TIME) with
830 | CURLINFO_Double d -> d
831 | _ -> 0.0
833 let get_namelookuptime conn =
834 match (getinfo conn CURLINFO_NAMELOOKUP_TIME) with
835 | CURLINFO_Double d -> d
836 | _ -> 0.0
838 let get_connecttime conn =
839 match (getinfo conn CURLINFO_CONNECT_TIME) with
840 | CURLINFO_Double d -> d
841 | _ -> 0.0
843 let get_pretransfertime conn =
844 match (getinfo conn CURLINFO_PRETRANSFER_TIME) with
845 | CURLINFO_Double d -> d
846 | _ -> 0.0
848 let get_sizeupload conn =
849 match (getinfo conn CURLINFO_SIZE_UPLOAD) with
850 | CURLINFO_Double d -> d
851 | _ -> 0.0
853 let get_sizedownload conn =
854 match (getinfo conn CURLINFO_SIZE_DOWNLOAD) with
855 | CURLINFO_Double d -> d
856 | _ -> 0.0
858 let get_speeddownload conn =
859 match (getinfo conn CURLINFO_SPEED_DOWNLOAD) with
860 | CURLINFO_Double d -> d
861 | _ -> 0.0
863 let get_speedupload conn =
864 match (getinfo conn CURLINFO_SPEED_UPLOAD) with
865 | CURLINFO_Double d -> d
866 | _ -> 0.0
868 let get_headersize conn =
869 match (getinfo conn CURLINFO_HEADER_SIZE) with
870 | CURLINFO_Long l -> l
871 | _ -> 0
873 let get_requestsize conn =
874 match (getinfo conn CURLINFO_REQUEST_SIZE) with
875 | CURLINFO_Long l -> l
876 | _ -> 0
878 let get_sslverifyresult conn =
879 match (getinfo conn CURLINFO_SSL_VERIFYRESULT) with
880 | CURLINFO_Long l -> l
881 | _ -> 0
883 let get_filetime conn =
884 match (getinfo conn CURLINFO_FILETIME) with
885 | CURLINFO_Double d -> d
886 | _ -> 0.0
888 let get_contentlengthdownload conn =
889 match (getinfo conn CURLINFO_CONTENT_LENGTH_DOWNLOAD) with
890 | CURLINFO_Double d -> d
891 | _ -> 0.0
893 let get_contentlengthupload conn =
894 match (getinfo conn CURLINFO_CONTENT_LENGTH_UPLOAD) with
895 | CURLINFO_Double d -> d
896 | _ -> 0.0
898 let get_starttransfertime conn =
899 match (getinfo conn CURLINFO_STARTTRANSFER_TIME) with
900 | CURLINFO_Double d -> d
901 | _ -> 0.0
903 let get_contenttype conn =
904 match (getinfo conn CURLINFO_CONTENT_TYPE) with
905 | CURLINFO_String s -> s
906 | _ -> ""
908 let get_redirecttime conn =
909 match (getinfo conn CURLINFO_REDIRECT_TIME) with
910 | CURLINFO_Double d -> d
911 | _ -> 0.0
913 let get_redirectcount conn =
914 match (getinfo conn CURLINFO_REDIRECT_COUNT) with
915 | CURLINFO_Long l -> l
916 | _ -> 0
918 let get_private conn =
919 match (getinfo conn CURLINFO_PRIVATE) with
920 | CURLINFO_String s -> s
921 | _ -> ""
923 let get_httpconnectcode conn =
924 match (getinfo conn CURLINFO_HTTP_CONNECTCODE) with
925 | CURLINFO_Long l -> l
926 | _ -> 0
928 let generate_auth auth =
929 let result = ref [] in
930 if auth land 1 != 0 then result := [CURLAUTH_BASIC];
931 if auth land 2 != 0 then result := CURLAUTH_DIGEST :: !result;
932 if auth land 4 != 0 then result := CURLAUTH_GSSNEGOTIATE :: !result;
933 if auth land 8 != 0 then result := CURLAUTH_NTLM :: !result;
934 !result
936 let get_httpauthavail conn =
937 match (getinfo conn CURLINFO_HTTPAUTH_AVAIL) with
938 | CURLINFO_Long l -> generate_auth l
939 | _ -> []
941 let get_proxyauthavail conn =
942 match (getinfo conn CURLINFO_PROXYAUTH_AVAIL) with
943 | CURLINFO_Long l -> generate_auth l
944 | _ -> []
946 let get_oserrno conn =
947 match (getinfo conn CURLINFO_OS_ERRNO) with
948 | CURLINFO_Long l -> l
949 | _ -> 0
951 let get_numconnects conn =
952 match (getinfo conn CURLINFO_NUM_CONNECTS) with
953 | CURLINFO_Long l -> l
954 | _ -> 0
956 let get_sslengines conn =
957 match (getinfo conn CURLINFO_SSL_ENGINES) with
958 | CURLINFO_StringList l -> l
959 | _ -> []
961 let get_cookielist conn =
962 match (getinfo conn CURLINFO_COOKIELIST) with
963 | CURLINFO_StringList l -> l
964 | _ -> []
966 let get_lastsocket conn =
967 match (getinfo conn CURLINFO_LASTSOCKET) with
968 | CURLINFO_Long l -> l
969 | _ -> 0
971 let get_ftpentrypath conn =
972 match (getinfo conn CURLINFO_FTP_ENTRY_PATH) with
973 | CURLINFO_String s -> s
974 | _ -> ""
976 let () =
977 Callback.register_exception "CurlException"
978 (CurlException (CURLE_OK, 0, ""))
980 class handle =
981 object
982 val conn = init ()
983 method duphandle = {< conn = duphandle conn >}
984 method perform = perform conn
985 method cleanup = cleanup conn
986 method set_writefunction closure = set_writefunction conn closure
987 method set_readfunction closure = set_readfunction conn closure
988 method set_infilesize size = set_infilesize conn size
989 method set_url url = set_url conn url
990 method set_proxy proxy = set_proxy conn proxy
991 method set_proxyport proxyport = set_proxyport conn proxyport
992 method set_httpproxytunnel flag = set_httpproxytunnel conn flag
993 method set_verbose flag = set_verbose conn flag
994 method set_header flag = set_header conn flag
995 method set_noprogress flag = set_noprogress conn flag
996 method set_nosignal flag = set_nosignal conn flag
997 method set_nobody flag = set_nobody conn flag
998 method set_failonerror flag = set_failonerror conn flag
999 method set_upload flag = set_upload conn flag
1000 method set_post flag = set_post conn flag
1001 method set_ftplistonly flag = set_ftplistonly conn flag
1002 method set_ftpappend flag = set_ftpappend conn flag
1003 method set_netrc netrc = set_netrc conn netrc
1004 method set_encoding encoding = set_encoding conn encoding
1005 method set_followlocation flag = set_followlocation conn flag
1006 method set_transfertext flag = set_transfertext conn flag
1007 method set_put flag = set_put conn flag
1008 method set_userpwd userpwd = set_userpwd conn userpwd
1009 method set_proxyuserpwd proxyuserpwd = set_proxyuserpwd conn proxyuserpwd
1010 method set_range range = set_range conn range
1011 method set_errorbuffer errorbuffer = set_errorbuffer conn errorbuffer
1012 method set_timeout timeout = set_timeout conn timeout
1013 method set_postfields postfields = set_postfields conn postfields
1014 method set_referer referer = set_referer conn referer
1015 method set_useragent useragent = set_useragent conn useragent
1016 method set_ftpport ftpport = set_ftpport conn ftpport
1017 method set_lowspeedlimit lowspeedlimit = set_lowspeedlimit conn lowspeedlimit
1018 method set_lowspeedtime lowspeedtime = set_lowspeedtime conn lowspeedtime
1019 method set_resumefrom resumefrom = set_resumefrom conn resumefrom
1020 method set_cookie cookie = set_cookie conn cookie
1021 method set_httpheader httpheader = set_httpheader conn httpheader
1022 method set_httppost httppost = set_httppost conn httppost
1023 method set_sslcert sslcert = set_sslcert conn sslcert
1024 method set_sslcerttype sslcerttype = set_sslcerttype conn sslcerttype
1025 method set_sslcertpasswd sslcertpasswd = set_sslcertpasswd conn sslcertpasswd
1026 method set_sslkey sslkey = set_sslkey conn sslkey
1027 method set_sslkeytype sslkeytype = set_sslkeytype conn sslkeytype
1028 method set_sslkeypasswd sslkeypasswd = set_sslkeypasswd conn sslkeypasswd
1029 method set_sslengine sslengine = set_sslengine conn sslengine
1030 method set_sslenginedefault flag = set_sslenginedefault conn flag
1031 method set_crlf flag = set_crlf conn flag
1032 method set_quote quote = set_quote conn quote
1033 method set_postquote postquote = set_postquote conn postquote
1034 method set_headerfunction closure = set_headerfunction conn closure
1035 method set_cookiefile cookiefile = set_cookiefile conn cookiefile
1036 method set_sslversion sslversion = set_sslversion conn sslversion
1037 method set_timecondition timecondition = set_timecondition conn timecondition
1038 method set_timevalue timevalue = set_timevalue conn timevalue
1039 method set_customrequest customrequest = set_customrequest conn customrequest
1040 method set_interface interface = set_interface conn interface
1041 method set_krb4level krb4level = set_krb4level conn krb4level
1042 method set_progressfunction closure = set_progressfunction conn closure
1043 method set_sslverifypeer flag = set_sslverifypeer conn flag
1044 method set_cainfo cainfo = set_cainfo conn cainfo
1045 method set_capath capath = set_capath conn capath
1046 method set_filetime filetime = set_filetime conn filetime
1047 method set_maxredirs maxredirs = set_maxredirs conn maxredirs
1048 method set_maxconnects maxconnects = set_maxconnects conn maxconnects
1049 method set_closepolicy closepolicy = set_closepolicy conn closepolicy
1050 method set_freshconnect flag = set_freshconnect conn flag
1051 method set_forbidreuse flag = set_forbidreuse conn flag
1052 method set_randomfile randomfile = set_randomfile conn randomfile
1053 method set_egdsocket egdsocket = set_egdsocket conn egdsocket
1054 method set_connecttimeout connecttimeout =
1055 set_connecttimeout conn connecttimeout
1056 method set_httpget flag = set_httpget conn flag
1057 method set_sslverifyhost sslverifyhost = set_sslverifyhost conn sslverifyhost
1058 method set_cookiejar cookiejar = set_cookiejar conn cookiejar
1059 method set_sslcipherlist sslcipherlist = set_sslcipherlist conn sslcipherlist
1060 method set_httpversion httpversion = set_httpversion conn httpversion
1061 method set_ftpuseepsv flag = set_ftpuseepsv conn flag
1062 method set_dnscachetimeout dnscachetimeout = set_dnscachetimeout conn dnscachetimeout
1063 method set_dnsuseglobalcache flag = set_dnsuseglobalcache conn flag
1064 method set_debugfunction closure = set_debugfunction conn closure
1065 method set_private privateData = set_private conn privateData
1066 method set_http200aliases aliases = set_http200aliases conn aliases
1067 method set_unrestrictedauth flag = set_unrestrictedauth conn flag
1068 method set_ftpuseeprt flag = set_ftpuseeprt conn flag
1069 method set_httpauth auth = set_httpauth conn auth
1070 method set_ftpcreatemissingdirs flag = set_ftpcreatemissingdirs conn flag
1071 method set_proxyauth auth = set_proxyauth conn auth
1072 method set_ftpresponsetimeout timeout = set_ftpresponsetimeout conn timeout
1073 method set_ipresolve ipresolve = set_ipresolve conn ipresolve
1074 method set_maxfilesize size = set_maxfilesize conn size
1075 method set_infilesizelarge size = set_infilesizelarge conn size
1076 method set_resumefromlarge size = set_resumefromlarge conn size
1077 method set_maxfilesizelarge size = set_maxfilesizelarge conn size
1078 method set_netrcfile file = set_netrcfile conn file
1079 method set_ftpssl ftpssl = set_ftpssl conn ftpssl
1080 method set_postfieldsize size = set_postfieldsize conn size
1081 method set_postfieldsizelarge size = set_postfieldsizelarge conn size
1082 method set_tcpnodelay flag = set_tcpnodelay conn flag
1083 method set_ftpsslauth flag = set_ftpsslauth conn flag
1084 method set_ioctlfunction closure = set_ioctlfunction conn closure
1085 method set_ftpaccount account = set_ftpaccount conn account
1086 method set_cookielist cookielist = set_cookielist conn cookielist
1087 method set_ignorecontentlength flag = set_ignorecontentlength conn flag
1088 method set_ftpskippasvip flag = set_ftpskippasvip conn flag
1089 method set_ftpfilemethod ftpMethod = set_ftpfilemethod conn ftpMethod
1090 method set_localport port = set_localport conn port
1091 method set_localportrange range = set_localportrange conn range
1092 method set_connectonly flag = set_connectonly conn flag
1093 method set_maxsendspeedlarge speed = set_maxsendspeedlarge conn speed
1094 method set_maxrecvspeedlarge speed = set_maxrecvspeedlarge conn speed
1095 method set_ftpalternativetouser user = set_ftpalternativetouser conn user
1096 method set_sslsessionidcache flag = set_sslsessionidcache conn flag
1097 method set_sshauthtypes types = set_sshauthtypes conn types
1098 method set_sshpublickeyfile keyfile = set_sshpublickeyfile conn keyfile
1099 method set_sshprivatekeyfile keyfile = set_sshprivatekeyfile conn keyfile
1100 method set_ftpsslccc ccc = set_ftpsslccc conn ccc
1101 method set_timeoutms ms = set_timeoutms conn ms
1102 method set_connecttimeoutms ms = set_connecttimeoutms conn ms
1103 method set_httptransferdecoding flag = set_httptransferdecoding conn flag
1104 method set_httpcontentdecoding flag = set_httpcontentdecoding conn flag
1105 method set_newfileperms perms = set_newfileperms conn perms
1106 method set_newdirectoryperms perms = set_newdirectoryperms conn perms
1107 method set_post301 flag = set_post301 conn flag
1108 method set_sshhostpublickeymd5 key = set_sshhostpublickeymd5 conn key
1109 method set_copypostfields post = set_copypostfields conn post
1110 method set_proxytransfermode flag = set_proxytransfermode conn flag
1111 method set_seekfunction closure = set_seekfunction conn closure
1113 method get_effectiveurl = get_effectiveurl conn
1114 method get_responsecode = get_responsecode conn
1115 method get_httpcode = get_responsecode conn
1116 method get_totaltime = get_totaltime conn
1117 method get_namelookuptime = get_namelookuptime conn
1118 method get_connecttime = get_connecttime conn
1119 method get_pretransfertime = get_pretransfertime conn
1120 method get_sizeupload = get_sizeupload conn
1121 method get_sizedownload = get_sizedownload conn
1122 method get_speeddownload = get_speeddownload conn
1123 method get_speedupload = get_speedupload conn
1124 method get_headersize = get_headersize conn
1125 method get_requestsize = get_requestsize conn
1126 method get_sslverifyresult = get_sslverifyresult conn
1127 method get_filetime = get_filetime conn
1128 method get_contentlengthdownload = get_contentlengthdownload conn
1129 method get_contentlengthupload = get_contentlengthupload conn
1130 method get_starttransfertime = get_starttransfertime conn
1131 method get_contenttype = get_contenttype conn
1132 method get_redirecttime = get_redirecttime conn
1133 method get_redirectcount = get_redirectcount conn
1134 method get_private = get_private conn
1135 method get_httpconnectcode = get_httpconnectcode conn
1136 method get_httpauthavail = get_httpauthavail conn
1137 method get_proxyauthavail = get_proxyauthavail conn
1138 method get_oserrno = get_oserrno conn
1139 method get_numconnects = get_numconnects conn
1140 method get_sslengines = get_sslengines conn
1141 method get_cookielist = get_cookielist conn
1142 method get_lastsocket = get_lastsocket conn
1143 method get_ftpentrypath = get_ftpentrypath conn
1146 module Multi = struct
1148 type mt
1150 exception Error of string
1152 let () = Callback.register_exception "Curl.Multi.Error" (Error "")
1154 external create : unit -> mt = "caml_curl_multi_init"
1155 external add : mt -> t -> unit = "caml_curl_multi_add_handle"
1156 external perform : mt -> int = "caml_curl_multi_perform_all"
1157 external wait : mt -> bool = "caml_curlm_wait_data"
1158 external remove_finished : mt -> t option = "caml_curlm_remove_finished"
1159 external cleanup : mt -> unit = "caml_curl_multi_cleanup"
1161 (* see curlm_sock_cb *)
1162 type poll = POLL_NONE | POLL_IN | POLL_OUT | POLL_INOUT | POLL_REMOVE
1164 (* see caml_curl_multi_socket_action *)
1165 type fd_status = EV_AUTO | EV_IN | EV_OUT | EV_INOUT
1167 external set_socket_function : mt -> (Unix.file_descr -> poll -> unit) -> unit = "caml_curl_multi_socketfunction"
1168 external set_timer_function : mt -> (int -> unit) -> unit = "caml_curl_multi_timerfunction"
1169 external action_all : mt -> int = "caml_curl_multi_socket_all"
1170 external action : mt -> Unix.file_descr -> fd_status -> int = "caml_curl_multi_socket_action"
1172 let action_timeout mt =
1173 (* FIXME win32unix *)
1174 let curl_socket_timeout = (Obj.magic (-1) : Unix.file_descr) in
1175 ignore (action mt curl_socket_timeout EV_AUTO)
1177 external timeout : mt -> int = "caml_curl_multi_timeout"