4 * Copyright (c) 2003-2008, Lars Nilsson, <lars@quantumchamaeleon.com>
11 | CURLE_UNSUPPORTED_PROTOCOL
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
29 | CURLE_FTP_COULDNT_RETR_FILE
30 | CURLE_FTP_WRITE_ERROR
31 | CURLE_FTP_QUOTE_ERROR
32 | CURLE_HTTP_NOT_FOUND
34 | CURLE_MALFORMAT_USER
35 | CURLE_FTP_COULDNT_STOR_FILE
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
61 | CURLE_SSL_PEER_CERTIFICATE
63 | CURLE_SSL_ENGINE_NOTFOUND
64 | CURLE_SSL_ENGINE_SETFAILED
68 | CURLE_SSL_CERTPROBLEM
71 | CURLE_BAD_CONTENT_ENCODING
72 | CURLE_LDAP_INVALID_URL
73 | CURLE_FILESIZE_EXCEEDED
74 | CURLE_USE_SSL_FAILED
75 | CURLE_SEND_FAIL_REWIND
76 | CURLE_SSL_ENGINE_INITFAILED
80 | CURLE_REMOTE_DISK_FULL
82 | CURLE_TFTP_UNKNOWNID
83 | CURLE_REMOTE_FILE_EXISTS
84 | CURLE_TFTP_NOSUCHUSER
87 | CURLE_SSL_CACERT_BADFILE
88 | CURLE_REMOTE_FILE_NOT_FOUND
90 | CURLE_SSL_SHUTDOWN_FAILED
93 exception CurlException
of (curlCode
* int * string)
95 type curlNETRCOption
=
102 | CURL_ENCODING_DEFLATE
104 type curlContentType
=
106 | CONTENTTYPE
of string
109 | CURLFORM_CONTENT
of string * string * curlContentType
110 | CURLFORM_FILECONTENT
of string * string * curlContentType
111 | CURLFORM_FILE
of string * string * curlContentType
112 | CURLFORM_BUFFER
of string * string * string * curlContentType
116 | CURLFORM_COPYNAME of string
117 | CURLFORM_PTRNAME of string
118 | CURLFORM_NAMELENGTH of int
119 | CURLFORM_COPYCONTENTS of string
120 | CURLFORM_PTRCONTENTS of string
121 | CURLFORM_FILE of string
122 | CURLFORM_FILECONTENT of string
123 | CURLFORM_CONTENTSLENGTH of int
124 | CURLFORM_CONTENTTYPE of string
127 type curlTimeCondition
=
128 | TIMECOND_IFMODSINCE
129 | TIMECOND_IFUNMODSINCE
138 type curlClosePolicy
=
140 | CLOSEPOLICY_LEAST_RECENTLY_USED
142 type curlSSLVerifyHost
=
143 | SSLVERIFYHOST_EXISTENCE
144 | SSLVERIFYHOST_HOSTNAME
146 type curlHTTPVersion
=
153 | DEBUGTYPE_HEADER_IN
154 | DEBUGTYPE_HEADER_OUT
162 | CURLAUTH_GSSNEGOTIATE
178 type curlFTPSSLAuth
=
196 | FTPMETHOD_SINGLECWD
198 type curlSSHAuthTypes
=
216 | CURLOPT_WRITEFUNCTION
of (string -> int)
217 | CURLOPT_READFUNCTION
of (int -> string)
218 | CURLOPT_INFILESIZE
of int
219 | CURLOPT_URL
of string
220 | CURLOPT_PROXY
of string
221 | CURLOPT_PROXYPORT
of int
222 | CURLOPT_HTTPPROXYTUNNEL
of bool
223 | CURLOPT_VERBOSE
of bool
224 | CURLOPT_HEADER
of bool
225 | CURLOPT_NOPROGRESS
of bool
226 | CURLOPT_NOSIGNAL
of bool
227 | CURLOPT_NOBODY
of bool
228 | CURLOPT_FAILONERROR
of bool
229 | CURLOPT_UPLOAD
of bool
230 | CURLOPT_POST
of bool
231 | CURLOPT_FTPLISTONLY
of bool
232 | CURLOPT_FTPAPPEND
of bool
233 | CURLOPT_NETRC
of curlNETRCOption
234 | CURLOPT_ENCODING
of curlEncoding
235 | CURLOPT_FOLLOWLOCATION
of bool
236 | CURLOPT_TRANSFERTEXT
of bool
237 | CURLOPT_PUT
of bool
238 | CURLOPT_USERPWD
of string
239 | CURLOPT_PROXYUSERPWD
of string
240 | CURLOPT_RANGE
of string
241 | CURLOPT_ERRORBUFFER
of string ref
242 | CURLOPT_TIMEOUT
of int
243 | CURLOPT_POSTFIELDS
of string
244 | CURLOPT_POSTFIELDSIZE
of int
245 | CURLOPT_REFERER
of string
246 | CURLOPT_USERAGENT
of string
247 | CURLOPT_FTPPORT
of string
248 | CURLOPT_LOWSPEEDLIMIT
of int
249 | CURLOPT_LOWSPEEDTIME
of int
250 | CURLOPT_RESUMEFROM
of int
251 | CURLOPT_COOKIE
of string
252 | CURLOPT_HTTPHEADER
of string list
253 | CURLOPT_HTTPPOST
of curlHTTPPost list
254 | CURLOPT_SSLCERT
of string
255 | CURLOPT_SSLCERTTYPE
of string
256 | CURLOPT_SSLCERTPASSWD
of string
257 | CURLOPT_SSLKEY
of string
258 | CURLOPT_SSLKEYTYPE
of string
259 | CURLOPT_SSLKEYPASSWD
of string
260 | CURLOPT_SSLENGINE
of string
261 | CURLOPT_SSLENGINEDEFAULT
of bool
262 | CURLOPT_CRLF
of bool
263 | CURLOPT_QUOTE
of string list
264 | CURLOPT_POSTQUOTE
of string list
265 | CURLOPT_HEADERFUNCTION
of (string -> int)
266 | CURLOPT_COOKIEFILE
of string
267 | CURLOPT_SSLVERSION
of int
268 | CURLOPT_TIMECONDITION
of curlTimeCondition
269 | CURLOPT_TIMEVALUE
of int32
270 | CURLOPT_CUSTOMREQUEST
of string
271 | CURLOPT_STDERR
(* UNIMPLEMENTED *)
272 | CURLOPT_INTERFACE
of string
273 | CURLOPT_KRB4LEVEL
of curlKRB4Level
274 | CURLOPT_PROGRESSFUNCTION
of (float -> float -> float -> float -> bool)
275 | CURLOPT_SSLVERIFYPEER
of bool
276 | CURLOPT_CAINFO
of string
277 | CURLOPT_CAPATH
of string
278 | CURLOPT_FILETIME
of bool
279 | CURLOPT_MAXREDIRS
of int
280 | CURLOPT_MAXCONNECTS
of int
281 | CURLOPT_CLOSEPOLICY
of curlClosePolicy
282 | CURLOPT_FRESHCONNECT
of bool
283 | CURLOPT_FORBIDREUSE
of bool
284 | CURLOPT_RANDOMFILE
of string
285 | CURLOPT_EGDSOCKET
of string
286 | CURLOPT_CONNECTTIMEOUT
of int
287 | CURLOPT_HTTPGET
of bool
288 | CURLOPT_SSLVERIFYHOST
of curlSSLVerifyHost
289 | CURLOPT_COOKIEJAR
of string
290 | CURLOPT_SSLCIPHERLIST
of string
291 | CURLOPT_HTTPVERSION
of curlHTTPVersion
292 | CURLOPT_FTPUSEEPSV
of bool
293 | CURLOPT_DNSCACHETIMEOUT
of int
294 | CURLOPT_DNSUSEGLOBALCACHE
of bool
295 | CURLOPT_DEBUGFUNCTION
of (t
-> curlDebugType
-> string -> unit)
296 | CURLOPT_PRIVATE
of string
297 | CURLOPT_HTTP200ALIASES
of string list
298 | CURLOPT_UNRESTRICTEDAUTH
of bool
299 | CURLOPT_FTPUSEEPRT
of bool
300 | CURLOPT_HTTPAUTH
of curlAuth list
301 | CURLOPT_FTPCREATEMISSINGDIRS
of bool
302 | CURLOPT_PROXYAUTH
of curlAuth list
303 | CURLOPT_FTPRESPONSETIMEOUT
of int
304 | CURLOPT_IPRESOLVE
of curlIPResolve
305 | CURLOPT_MAXFILESIZE
of int32
306 | CURLOPT_INFILESIZELARGE
of int64
307 | CURLOPT_RESUMEFROMLARGE
of int64
308 | CURLOPT_MAXFILESIZELARGE
of int64
309 | CURLOPT_NETRCFILE
of string
310 | CURLOPT_FTPSSL
of curlFTPSSL
311 | CURLOPT_POSTFIELDSIZELARGE
of int64
312 | CURLOPT_TCPNODELAY
of bool
313 | CURLOPT_FTPSSLAUTH
of curlFTPSSLAuth
314 | CURLOPT_IOCTLFUNCTION
of (t
-> curlIOCmd
-> curlIOErr
)
315 | CURLOPT_FTPACCOUNT
of string
316 | CURLOPT_COOKIELIST
of string
317 | CURLOPT_IGNORECONTENTLENGTH
of bool
318 | CURLOPT_FTPSKIPPASVIP
of bool
319 | CURLOPT_FTPFILEMETHOD
of curlFTPMethod
320 | CURLOPT_LOCALPORT
of int
321 | CURLOPT_LOCALPORTRANGE
of int
322 | CURLOPT_CONNECTONLY
of bool
323 | CURLOPT_MAXSENDSPEEDLARGE
of int64
324 | CURLOPT_MAXRECVSPEEDLARGE
of int64
325 | CURLOPT_FTPALTERNATIVETOUSER
of string
326 | CURLOPT_SSLSESSIONIDCACHE
of bool
327 | CURLOPT_SSHAUTHTYPES
of curlSSHAuthTypes list
328 | CURLOPT_SSHPUBLICKEYFILE
of string
329 | CURLOPT_SSHPRIVATEKEYFILE
of string
330 | CURLOPT_FTPSSLCCC
of curlFTPSSLCCC
331 | CURLOPT_TIMEOUTMS
of int
332 | CURLOPT_CONNECTTIMEOUTMS
of int
333 | CURLOPT_HTTPTRANSFERDECODING
of bool
334 | CURLOPT_HTTPCONTENTDECODING
of bool
335 | CURLOPT_NEWFILEPERMS
of int
336 | CURLOPT_NEWDIRECTORYPERMS
of int
337 | CURLOPT_POST301
of bool
338 | CURLOPT_SSHHOSTPUBLICKEYMD5
of string
339 | CURLOPT_COPYPOSTFIELDS
of string
340 | CURLOPT_PROXYTRANSFERMODE
of bool
341 | CURLOPT_SEEKFUNCTION
of (int64
-> curlSeek
-> int)
346 | CURLINIT_GLOBALWIN32
347 | CURLINIT_GLOBALNOTHING
350 | CURLINFO_EFFECTIVE_URL
352 | CURLINFO_RESPONSE_CODE
353 | CURLINFO_TOTAL_TIME
354 | CURLINFO_NAMELOOKUP_TIME
355 | CURLINFO_CONNECT_TIME
356 | CURLINFO_PRETRANSFER_TIME
357 | CURLINFO_SIZE_UPLOAD
358 | CURLINFO_SIZE_DOWNLOAD
359 | CURLINFO_SPEED_DOWNLOAD
360 | CURLINFO_SPEED_UPLOAD
361 | CURLINFO_HEADER_SIZE
362 | CURLINFO_REQUEST_SIZE
363 | CURLINFO_SSL_VERIFYRESULT
365 | CURLINFO_CONTENT_LENGTH_DOWNLOAD
366 | CURLINFO_CONTENT_LENGTH_UPLOAD
367 | CURLINFO_STARTTRANSFER_TIME
368 | CURLINFO_CONTENT_TYPE
369 | CURLINFO_REDIRECT_TIME
370 | CURLINFO_REDIRECT_COUNT
372 | CURLINFO_HTTP_CONNECTCODE
373 | CURLINFO_HTTPAUTH_AVAIL
374 | CURLINFO_PROXYAUTH_AVAIL
376 | CURLINFO_NUM_CONNECTS
377 | CURLINFO_SSL_ENGINES
378 | CURLINFO_COOKIELIST
379 | CURLINFO_LASTSOCKET
380 | CURLINFO_FTP_ENTRY_PATH
382 type curlInfoResult
=
383 | CURLINFO_String
of string
384 | CURLINFO_Long
of int
385 | CURLINFO_Double
of float
386 | CURLINFO_StringList
of string list
388 external helper_global_init
: initOption
-> unit = "helper_curl_global_init"
389 external helper_global_cleanup
: unit -> unit = "helper_curl_global_cleanup"
390 external helper_init
: unit -> t
= "helper_curl_easy_init"
391 external helper_duphandle
: t
-> t
= "helper_curl_easy_duphandle"
392 external helper_setopt
: t
-> curlOption
-> unit = "helper_curl_easy_setopt"
393 external helper_perform
: t
-> unit = "helper_curl_easy_perform"
394 external helper_cleanup
: t
-> unit = "helper_curl_easy_cleanup"
395 external helper_getinfo
: t
-> curlInfo
-> curlInfoResult
= "helper_curl_easy_getinfo"
396 external helper_escape
: string -> string = "helper_curl_escape"
397 external helper_unescape
: string -> string = "helper_curl_unescape"
398 external helper_getdate
: string -> float -> float = "helper_curl_getdate"
399 external helper_version
: unit -> string = "helper_curl_version"
404 external reset
: t
-> unit = "helper_curl_easy_reset"
407 helper_duphandle conn
409 let setopt conn
option =
410 helper_setopt conn
option
421 let global_init initOption
=
422 helper_global_init initOption
424 let global_cleanup () =
425 helper_global_cleanup
()
433 let getdate str now
=
434 helper_getdate str now
439 let set_writefunction conn closure
=
440 setopt conn
(CURLOPT_WRITEFUNCTION closure
)
442 let set_readfunction conn closure
=
443 setopt conn
(CURLOPT_READFUNCTION closure
)
445 let set_infilesize conn size
=
446 setopt conn
(CURLOPT_INFILESIZE size
)
448 let set_url conn url
=
449 setopt conn
(CURLOPT_URL url
)
451 let set_proxy conn proxy
=
452 setopt conn
(CURLOPT_PROXY proxy
)
454 let set_proxyport conn proxyport
=
455 setopt conn
(CURLOPT_PROXYPORT proxyport
)
457 let set_httpproxytunnel conn flag
=
458 setopt conn
(CURLOPT_HTTPPROXYTUNNEL flag
)
460 let set_verbose conn flag
=
461 setopt conn
(CURLOPT_VERBOSE flag
)
463 let set_header conn flag
=
464 setopt conn
(CURLOPT_HEADER flag
)
466 let set_noprogress conn flag
=
467 setopt conn
(CURLOPT_NOPROGRESS flag
)
469 let set_nosignal conn flag
=
470 setopt conn
(CURLOPT_NOSIGNAL flag
)
472 let set_nobody conn flag
=
473 setopt conn
(CURLOPT_NOBODY flag
)
475 let set_failonerror conn flag
=
476 setopt conn
(CURLOPT_FAILONERROR flag
)
478 let set_upload conn flag
=
479 setopt conn
(CURLOPT_UPLOAD flag
)
481 let set_post conn flag
=
482 setopt conn
(CURLOPT_POST flag
)
484 let set_ftplistonly conn flag
=
485 setopt conn
(CURLOPT_FTPLISTONLY flag
)
487 let set_ftpappend conn flag
=
488 setopt conn
(CURLOPT_FTPAPPEND flag
)
490 let set_netrc conn netrc
=
491 setopt conn
(CURLOPT_NETRC netrc
)
493 let set_encoding conn encoding
=
494 setopt conn
(CURLOPT_ENCODING encoding
)
496 let set_followlocation conn flag
=
497 setopt conn
(CURLOPT_FOLLOWLOCATION flag
)
499 let set_transfertext conn flag
=
500 setopt conn
(CURLOPT_TRANSFERTEXT flag
)
502 let set_put conn flag
=
503 setopt conn
(CURLOPT_PUT flag
)
505 let set_userpwd conn userpwd
=
506 setopt conn
(CURLOPT_USERPWD userpwd
)
508 let set_proxyuserpwd conn proxyuserpwd
=
509 setopt conn
(CURLOPT_PROXYUSERPWD proxyuserpwd
)
511 let set_range conn range
=
512 setopt conn
(CURLOPT_RANGE range
)
514 let set_errorbuffer conn errorbuffer
=
515 setopt conn
(CURLOPT_ERRORBUFFER errorbuffer
)
517 let set_timeout conn timeout
=
518 setopt conn
(CURLOPT_TIMEOUT timeout
)
520 let set_postfields conn postfields
=
521 setopt conn
(CURLOPT_POSTFIELDS postfields
)
523 let set_postfieldsize conn postfieldsize
=
524 setopt conn
(CURLOPT_POSTFIELDSIZE postfieldsize
)
526 let set_referer conn referer
=
527 setopt conn
(CURLOPT_REFERER referer
)
529 let set_useragent conn useragent
=
530 setopt conn
(CURLOPT_USERAGENT useragent
)
532 let set_ftpport conn ftpport
=
533 setopt conn
(CURLOPT_FTPPORT ftpport
)
535 let set_lowspeedlimit conn lowspeedlimit
=
536 setopt conn
(CURLOPT_LOWSPEEDLIMIT lowspeedlimit
)
538 let set_lowspeedtime conn lowspeedtime
=
539 setopt conn
(CURLOPT_LOWSPEEDTIME lowspeedtime
)
541 let set_resumefrom conn resumefrom
=
542 setopt conn
(CURLOPT_RESUMEFROM resumefrom
)
544 let set_cookie conn cookie
=
545 setopt conn
(CURLOPT_COOKIE cookie
)
547 let set_httpheader conn httpheader
=
548 setopt conn
(CURLOPT_HTTPHEADER httpheader
)
550 let set_httppost conn httppost
=
551 setopt conn
(CURLOPT_HTTPPOST httppost
)
553 let set_sslcert conn sslcert
=
554 setopt conn
(CURLOPT_SSLCERT sslcert
)
556 let set_sslcerttype conn sslcerttype
=
557 setopt conn
(CURLOPT_SSLCERTTYPE sslcerttype
)
559 let set_sslcertpasswd conn sslcertpasswd
=
560 setopt conn
(CURLOPT_SSLCERTPASSWD sslcertpasswd
)
562 let set_sslkey conn sslkey
=
563 setopt conn
(CURLOPT_SSLKEY sslkey
)
565 let set_sslkeytype conn sslkeytype
=
566 setopt conn
(CURLOPT_SSLKEYTYPE sslkeytype
)
568 let set_sslkeypasswd conn sslkeypasswd
=
569 setopt conn
(CURLOPT_SSLKEYPASSWD sslkeypasswd
)
571 let set_sslengine conn sslengine
=
572 setopt conn
(CURLOPT_SSLENGINE sslengine
)
574 let set_sslenginedefault conn flag
=
575 setopt conn
(CURLOPT_SSLENGINEDEFAULT flag
)
577 let set_crlf conn flag
=
578 setopt conn
(CURLOPT_CRLF flag
)
580 let set_quote conn quote
=
581 setopt conn
(CURLOPT_QUOTE quote
)
583 let set_postquote conn postquote
=
584 setopt conn
(CURLOPT_POSTQUOTE postquote
)
586 let set_headerfunction conn closure
=
587 setopt conn
(CURLOPT_HEADERFUNCTION closure
)
589 let set_cookiefile conn cookiefile
=
590 setopt conn
(CURLOPT_COOKIEFILE cookiefile
)
592 let set_sslversion conn sslversion
=
593 setopt conn
(CURLOPT_SSLVERSION sslversion
)
595 let set_timecondition conn timecondition
=
596 setopt conn
(CURLOPT_TIMECONDITION timecondition
)
598 let set_timevalue conn timevalue
=
599 setopt conn
(CURLOPT_TIMEVALUE timevalue
)
601 let set_customrequest conn customrequest
=
602 setopt conn
(CURLOPT_CUSTOMREQUEST customrequest
)
604 let set_interface conn interface
=
605 setopt conn
(CURLOPT_INTERFACE interface
)
607 let set_krb4level conn krb4level
=
608 setopt conn
(CURLOPT_KRB4LEVEL krb4level
)
610 let set_progressfunction conn closure
=
611 setopt conn
(CURLOPT_PROGRESSFUNCTION closure
)
613 let set_sslverifypeer conn flag
=
614 setopt conn
(CURLOPT_SSLVERIFYPEER flag
)
616 let set_cainfo conn cainfo
=
617 setopt conn
(CURLOPT_CAINFO cainfo
)
619 let set_capath conn capath
=
620 setopt conn
(CURLOPT_CAPATH capath
)
622 let set_filetime conn filetime
=
623 setopt conn
(CURLOPT_FILETIME filetime
)
625 let set_maxredirs conn maxredirs
=
626 setopt conn
(CURLOPT_MAXREDIRS maxredirs
)
628 let set_maxconnects conn maxconnects
=
629 setopt conn
(CURLOPT_MAXCONNECTS maxconnects
)
631 let set_closepolicy conn closepolicy
=
632 setopt conn
(CURLOPT_CLOSEPOLICY closepolicy
)
634 let set_freshconnect conn flag
=
635 setopt conn
(CURLOPT_FRESHCONNECT flag
)
637 let set_forbidreuse conn flag
=
638 setopt conn
(CURLOPT_FORBIDREUSE flag
)
640 let set_randomfile conn randomfile
=
641 setopt conn
(CURLOPT_RANDOMFILE randomfile
)
643 let set_egdsocket conn egdsocket
=
644 setopt conn
(CURLOPT_EGDSOCKET egdsocket
)
646 let set_connecttimeout conn connecttimeout
=
647 setopt conn
(CURLOPT_CONNECTTIMEOUT connecttimeout
)
649 let set_httpget conn flag
=
650 setopt conn
(CURLOPT_HTTPGET flag
)
652 let set_sslverifyhost conn sslverifyhost
=
653 setopt conn
(CURLOPT_SSLVERIFYHOST sslverifyhost
)
655 let set_cookiejar conn cookiejar
=
656 setopt conn
(CURLOPT_COOKIEJAR cookiejar
)
658 let set_sslcipherlist conn sslcipherlist
=
659 setopt conn
(CURLOPT_SSLCIPHERLIST sslcipherlist
)
661 let set_httpversion conn httpversion
=
662 setopt conn
(CURLOPT_HTTPVERSION httpversion
)
664 let set_ftpuseepsv conn flag
=
665 setopt conn
(CURLOPT_FTPUSEEPSV flag
)
667 let set_dnscachetimeout conn dnscachetimeout
=
668 setopt conn
(CURLOPT_DNSCACHETIMEOUT dnscachetimeout
)
670 let set_dnsuseglobalcache conn flag
=
671 setopt conn
(CURLOPT_DNSUSEGLOBALCACHE flag
)
673 let set_debugfunction conn closure
=
674 setopt conn
(CURLOPT_DEBUGFUNCTION closure
)
676 let set_private conn privateData
=
677 setopt conn
(CURLOPT_PRIVATE privateData
)
679 let set_http200aliases conn aliases
=
680 setopt conn
(CURLOPT_HTTP200ALIASES aliases
)
682 let set_unrestrictedauth conn flag
=
683 setopt conn
(CURLOPT_UNRESTRICTEDAUTH flag
)
685 let set_ftpuseeprt conn flag
=
686 setopt conn
(CURLOPT_FTPUSEEPRT flag
)
688 let set_httpauth conn auth
=
689 setopt conn
(CURLOPT_HTTPAUTH auth
)
691 let set_ftpcreatemissingdirs conn flag
=
692 setopt conn
(CURLOPT_FTPCREATEMISSINGDIRS flag
)
694 let set_proxyauth conn auth
=
695 setopt conn
(CURLOPT_PROXYAUTH auth
)
697 let set_ftpresponsetimeout conn timeout
=
698 setopt conn
(CURLOPT_FTPRESPONSETIMEOUT timeout
)
700 let set_ipresolve conn ipresolve
=
701 setopt conn
(CURLOPT_IPRESOLVE ipresolve
)
703 let set_maxfilesize conn size
=
704 setopt conn
(CURLOPT_MAXFILESIZE size
)
706 let set_infilesizelarge conn size
=
707 setopt conn
(CURLOPT_INFILESIZELARGE size
)
709 let set_resumefromlarge conn size
=
710 setopt conn
(CURLOPT_RESUMEFROMLARGE size
)
712 let set_maxfilesizelarge conn size
=
713 setopt conn
(CURLOPT_MAXFILESIZELARGE size
)
715 let set_netrcfile conn file
=
716 setopt conn
(CURLOPT_NETRCFILE file
)
718 let set_ftpssl conn ftpssl
=
719 setopt conn
(CURLOPT_FTPSSL ftpssl
)
721 let set_postfieldsizelarge conn size
=
722 setopt conn
(CURLOPT_POSTFIELDSIZELARGE size
)
724 let set_tcpnodelay conn flag
=
725 setopt conn
(CURLOPT_TCPNODELAY flag
)
727 let set_ftpsslauth conn auth
=
728 setopt conn
(CURLOPT_FTPSSLAUTH auth
)
730 let set_ioctlfunction conn closure
=
731 setopt conn
(CURLOPT_IOCTLFUNCTION closure
)
733 let set_ftpaccount conn account
=
734 setopt conn
(CURLOPT_FTPACCOUNT account
)
736 let set_cookielist conn cookielist
=
737 setopt conn
(CURLOPT_COOKIELIST cookielist
)
739 let set_ignorecontentlength conn flag
=
740 setopt conn
(CURLOPT_IGNORECONTENTLENGTH flag
)
742 let set_ftpskippasvip conn flag
=
743 setopt conn
(CURLOPT_FTPSKIPPASVIP flag
)
745 let set_ftpfilemethod conn ftpMethod
=
746 setopt conn
(CURLOPT_FTPFILEMETHOD ftpMethod
)
748 let set_localport conn port
=
749 setopt conn
(CURLOPT_LOCALPORT port
)
751 let set_localportrange conn range
=
752 setopt conn
(CURLOPT_LOCALPORTRANGE range
)
754 let set_connectonly conn flag
=
755 setopt conn
(CURLOPT_CONNECTONLY flag
)
757 let set_maxsendspeedlarge conn speed
=
758 setopt conn
(CURLOPT_MAXSENDSPEEDLARGE speed
)
760 let set_maxrecvspeedlarge conn speed
=
761 setopt conn
(CURLOPT_MAXRECVSPEEDLARGE speed
)
763 let set_ftpalternativetouser conn user
=
764 setopt conn
(CURLOPT_FTPALTERNATIVETOUSER user
)
766 let set_sslsessionidcache conn flag
=
767 setopt conn
(CURLOPT_SSLSESSIONIDCACHE flag
)
769 let set_sshauthtypes conn types
=
770 setopt conn
(CURLOPT_SSHAUTHTYPES types
)
772 let set_sshpublickeyfile conn keyfile
=
773 setopt conn
(CURLOPT_SSHPUBLICKEYFILE keyfile
)
775 let set_sshprivatekeyfile conn keyfile
=
776 setopt conn
(CURLOPT_SSHPRIVATEKEYFILE keyfile
)
778 let set_ftpsslccc conn ccc
=
779 setopt conn
(CURLOPT_FTPSSLCCC ccc
)
781 let set_timeoutms conn ms
=
782 setopt conn
(CURLOPT_TIMEOUTMS ms
)
784 let set_connecttimeoutms conn ms
=
785 setopt conn
(CURLOPT_CONNECTTIMEOUTMS ms
)
787 let set_httptransferdecoding conn flag
=
788 setopt conn
(CURLOPT_HTTPTRANSFERDECODING flag
)
790 let set_httpcontentdecoding conn flag
=
791 setopt conn
(CURLOPT_HTTPCONTENTDECODING flag
)
793 let set_newfileperms conn perms
=
794 setopt conn
(CURLOPT_NEWFILEPERMS perms
)
796 let set_newdirectoryperms conn perms
=
797 setopt conn
(CURLOPT_NEWDIRECTORYPERMS perms
)
799 let set_post301 conn flag
=
800 setopt conn
(CURLOPT_POST301 flag
)
802 let set_sshhostpublickeymd5 conn key
=
803 setopt conn
(CURLOPT_SSHHOSTPUBLICKEYMD5 key
)
805 let set_copypostfields conn post
=
806 setopt conn
(CURLOPT_COPYPOSTFIELDS post
)
808 let set_proxytransfermode conn flag
=
809 setopt conn
(CURLOPT_PROXYTRANSFERMODE flag
)
811 let set_seekfunction conn closure
=
812 setopt conn
(CURLOPT_SEEKFUNCTION closure
)
814 let get_effectiveurl conn
=
815 match (getinfo conn CURLINFO_EFFECTIVE_URL
) with
816 | CURLINFO_String s
-> s
819 let get_responsecode conn
=
820 match (getinfo conn CURLINFO_HTTP_CODE
) with
821 | CURLINFO_Long l
-> l
824 let get_httpcode conn
=
825 get_responsecode conn
827 let get_totaltime conn
=
828 match (getinfo conn CURLINFO_TOTAL_TIME
) with
829 | CURLINFO_Double d
-> d
832 let get_namelookuptime conn
=
833 match (getinfo conn CURLINFO_NAMELOOKUP_TIME
) with
834 | CURLINFO_Double d
-> d
837 let get_connecttime conn
=
838 match (getinfo conn CURLINFO_CONNECT_TIME
) with
839 | CURLINFO_Double d
-> d
842 let get_pretransfertime conn
=
843 match (getinfo conn CURLINFO_PRETRANSFER_TIME
) with
844 | CURLINFO_Double d
-> d
847 let get_sizeupload conn
=
848 match (getinfo conn CURLINFO_SIZE_UPLOAD
) with
849 | CURLINFO_Double d
-> d
852 let get_sizedownload conn
=
853 match (getinfo conn CURLINFO_SIZE_DOWNLOAD
) with
854 | CURLINFO_Double d
-> d
857 let get_speeddownload conn
=
858 match (getinfo conn CURLINFO_SPEED_DOWNLOAD
) with
859 | CURLINFO_Double d
-> d
862 let get_speedupload conn
=
863 match (getinfo conn CURLINFO_SPEED_UPLOAD
) with
864 | CURLINFO_Double d
-> d
867 let get_headersize conn
=
868 match (getinfo conn CURLINFO_HEADER_SIZE
) with
869 | CURLINFO_Long l
-> l
872 let get_requestsize conn
=
873 match (getinfo conn CURLINFO_REQUEST_SIZE
) with
874 | CURLINFO_Long l
-> l
877 let get_sslverifyresult conn
=
878 match (getinfo conn CURLINFO_SSL_VERIFYRESULT
) with
879 | CURLINFO_Long l
-> l
882 let get_filetime conn
=
883 match (getinfo conn CURLINFO_FILETIME
) with
884 | CURLINFO_Double d
-> d
887 let get_contentlengthdownload conn
=
888 match (getinfo conn CURLINFO_CONTENT_LENGTH_DOWNLOAD
) with
889 | CURLINFO_Double d
-> d
892 let get_contentlengthupload conn
=
893 match (getinfo conn CURLINFO_CONTENT_LENGTH_UPLOAD
) with
894 | CURLINFO_Double d
-> d
897 let get_starttransfertime conn
=
898 match (getinfo conn CURLINFO_STARTTRANSFER_TIME
) with
899 | CURLINFO_Double d
-> d
902 let get_contenttype conn
=
903 match (getinfo conn CURLINFO_CONTENT_TYPE
) with
904 | CURLINFO_String s
-> s
907 let get_redirecttime conn
=
908 match (getinfo conn CURLINFO_REDIRECT_TIME
) with
909 | CURLINFO_Double d
-> d
912 let get_redirectcount conn
=
913 match (getinfo conn CURLINFO_REDIRECT_COUNT
) with
914 | CURLINFO_Long l
-> l
917 let get_private conn
=
918 match (getinfo conn CURLINFO_PRIVATE
) with
919 | CURLINFO_String s
-> s
922 let get_httpconnectcode conn
=
923 match (getinfo conn CURLINFO_HTTP_CONNECTCODE
) with
924 | CURLINFO_Long l
-> l
927 let generate_auth auth
=
928 let result = ref [] in
929 if auth
land 1 != 0 then result := [CURLAUTH_BASIC
];
930 if auth
land 2 != 0 then result := CURLAUTH_DIGEST
:: !result;
931 if auth
land 4 != 0 then result := CURLAUTH_GSSNEGOTIATE
:: !result;
932 if auth
land 8 != 0 then result := CURLAUTH_NTLM
:: !result;
935 let get_httpauthavail conn
=
936 match (getinfo conn CURLINFO_HTTPAUTH_AVAIL
) with
937 | CURLINFO_Long l
-> generate_auth l
940 let get_proxyauthavail conn
=
941 match (getinfo conn CURLINFO_PROXYAUTH_AVAIL
) with
942 | CURLINFO_Long l
-> generate_auth l
945 let get_oserrno conn
=
946 match (getinfo conn CURLINFO_OS_ERRNO
) with
947 | CURLINFO_Long l
-> l
950 let get_numconnects conn
=
951 match (getinfo conn CURLINFO_NUM_CONNECTS
) with
952 | CURLINFO_Long l
-> l
955 let get_sslengines conn
=
956 match (getinfo conn CURLINFO_SSL_ENGINES
) with
957 | CURLINFO_StringList l
-> l
960 let get_cookielist conn
=
961 match (getinfo conn CURLINFO_COOKIELIST
) with
962 | CURLINFO_StringList l
-> l
965 let get_lastsocket conn
=
966 match (getinfo conn CURLINFO_LASTSOCKET
) with
967 | CURLINFO_Long l
-> l
970 let get_ftpentrypath conn
=
971 match (getinfo conn CURLINFO_FTP_ENTRY_PATH
) with
972 | CURLINFO_String s
-> s
976 Callback.register_exception
"CurlException"
977 (CurlException
(CURLE_OK
, 0, ""))
982 method duphandle = {< conn
= duphandle conn
>}
983 method perform = perform conn
984 method cleanup = cleanup conn
985 method set_writefunction closure
= set_writefunction conn closure
986 method set_readfunction closure
= set_readfunction conn closure
987 method set_infilesize size
= set_infilesize conn size
988 method set_url url
= set_url conn url
989 method set_proxy proxy
= set_proxy conn proxy
990 method set_proxyport proxyport
= set_proxyport conn proxyport
991 method set_httpproxytunnel flag
= set_httpproxytunnel conn flag
992 method set_verbose flag
= set_verbose conn flag
993 method set_header flag
= set_header conn flag
994 method set_noprogress flag
= set_noprogress conn flag
995 method set_nosignal flag
= set_nosignal conn flag
996 method set_nobody flag
= set_nobody conn flag
997 method set_failonerror flag
= set_failonerror conn flag
998 method set_upload flag
= set_upload conn flag
999 method set_post flag
= set_post conn flag
1000 method set_ftplistonly flag
= set_ftplistonly conn flag
1001 method set_ftpappend flag
= set_ftpappend conn flag
1002 method set_netrc netrc
= set_netrc conn netrc
1003 method set_encoding encoding
= set_encoding conn encoding
1004 method set_followlocation flag
= set_followlocation conn flag
1005 method set_transfertext flag
= set_transfertext conn flag
1006 method set_put flag
= set_put conn flag
1007 method set_userpwd userpwd
= set_userpwd conn userpwd
1008 method set_proxyuserpwd proxyuserpwd
= set_proxyuserpwd conn proxyuserpwd
1009 method set_range range
= set_range conn range
1010 method set_errorbuffer errorbuffer
= set_errorbuffer conn errorbuffer
1011 method set_timeout timeout
= set_timeout conn timeout
1012 method set_postfields postfields
= set_postfields conn postfields
1013 method set_referer referer
= set_referer conn referer
1014 method set_useragent useragent
= set_useragent conn useragent
1015 method set_ftpport ftpport
= set_ftpport conn ftpport
1016 method set_lowspeedlimit lowspeedlimit
= set_lowspeedlimit conn lowspeedlimit
1017 method set_lowspeedtime lowspeedtime
= set_lowspeedtime conn lowspeedtime
1018 method set_resumefrom resumefrom
= set_resumefrom conn resumefrom
1019 method set_cookie cookie
= set_cookie conn cookie
1020 method set_httpheader httpheader
= set_httpheader conn httpheader
1021 method set_httppost httppost
= set_httppost conn httppost
1022 method set_sslcert sslcert
= set_sslcert conn sslcert
1023 method set_sslcerttype sslcerttype
= set_sslcerttype conn sslcerttype
1024 method set_sslcertpasswd sslcertpasswd
= set_sslcertpasswd conn sslcertpasswd
1025 method set_sslkey sslkey
= set_sslkey conn sslkey
1026 method set_sslkeytype sslkeytype
= set_sslkeytype conn sslkeytype
1027 method set_sslkeypasswd sslkeypasswd
= set_sslkeypasswd conn sslkeypasswd
1028 method set_sslengine sslengine
= set_sslengine conn sslengine
1029 method set_sslenginedefault flag
= set_sslenginedefault conn flag
1030 method set_crlf flag
= set_crlf conn flag
1031 method set_quote quote
= set_quote conn quote
1032 method set_postquote postquote
= set_postquote conn postquote
1033 method set_headerfunction closure
= set_headerfunction conn closure
1034 method set_cookiefile cookiefile
= set_cookiefile conn cookiefile
1035 method set_sslversion sslversion
= set_sslversion conn sslversion
1036 method set_timecondition timecondition
= set_timecondition conn timecondition
1037 method set_timevalue timevalue
= set_timevalue conn timevalue
1038 method set_customrequest customrequest
= set_customrequest conn customrequest
1039 method set_interface interface
= set_interface conn interface
1040 method set_krb4level krb4level
= set_krb4level conn krb4level
1041 method set_progressfunction closure
= set_progressfunction conn closure
1042 method set_sslverifypeer flag
= set_sslverifypeer conn flag
1043 method set_cainfo cainfo
= set_cainfo conn cainfo
1044 method set_capath capath
= set_capath conn capath
1045 method set_filetime filetime
= set_filetime conn filetime
1046 method set_maxredirs maxredirs
= set_maxredirs conn maxredirs
1047 method set_maxconnects maxconnects
= set_maxconnects conn maxconnects
1048 method set_closepolicy closepolicy
= set_closepolicy conn closepolicy
1049 method set_freshconnect flag
= set_freshconnect conn flag
1050 method set_forbidreuse flag
= set_forbidreuse conn flag
1051 method set_randomfile randomfile
= set_randomfile conn randomfile
1052 method set_egdsocket egdsocket
= set_egdsocket conn egdsocket
1053 method set_connecttimeout connecttimeout
=
1054 set_connecttimeout conn connecttimeout
1055 method set_httpget flag
= set_httpget conn flag
1056 method set_sslverifyhost sslverifyhost
= set_sslverifyhost conn sslverifyhost
1057 method set_cookiejar cookiejar
= set_cookiejar conn cookiejar
1058 method set_sslcipherlist sslcipherlist
= set_sslcipherlist conn sslcipherlist
1059 method set_httpversion httpversion
= set_httpversion conn httpversion
1060 method set_ftpuseepsv flag
= set_ftpuseepsv conn flag
1061 method set_dnscachetimeout dnscachetimeout
= set_dnscachetimeout conn dnscachetimeout
1062 method set_dnsuseglobalcache flag
= set_dnsuseglobalcache conn flag
1063 method set_debugfunction closure
= set_debugfunction conn closure
1064 method set_private privateData
= set_private conn privateData
1065 method set_http200aliases aliases
= set_http200aliases conn aliases
1066 method set_unrestrictedauth flag
= set_unrestrictedauth conn flag
1067 method set_ftpuseeprt flag
= set_ftpuseeprt conn flag
1068 method set_httpauth auth
= set_httpauth conn auth
1069 method set_ftpcreatemissingdirs flag
= set_ftpcreatemissingdirs conn flag
1070 method set_proxyauth auth
= set_proxyauth conn auth
1071 method set_ftpresponsetimeout timeout
= set_ftpresponsetimeout conn timeout
1072 method set_ipresolve ipresolve
= set_ipresolve conn ipresolve
1073 method set_maxfilesize size
= set_maxfilesize conn size
1074 method set_infilesizelarge size
= set_infilesizelarge conn size
1075 method set_resumefromlarge size
= set_resumefromlarge conn size
1076 method set_maxfilesizelarge size
= set_maxfilesizelarge conn size
1077 method set_netrcfile file
= set_netrcfile conn file
1078 method set_ftpssl ftpssl
= set_ftpssl conn ftpssl
1079 method set_postfieldsize size
= set_postfieldsize conn size
1080 method set_postfieldsizelarge size
= set_postfieldsizelarge conn size
1081 method set_tcpnodelay flag
= set_tcpnodelay conn flag
1082 method set_ftpsslauth flag
= set_ftpsslauth conn flag
1083 method set_ioctlfunction closure
= set_ioctlfunction conn closure
1084 method set_ftpaccount account
= set_ftpaccount conn account
1085 method set_cookielist cookielist
= set_cookielist conn cookielist
1086 method set_ignorecontentlength flag
= set_ignorecontentlength conn flag
1087 method set_ftpskippasvip flag
= set_ftpskippasvip conn flag
1088 method set_ftpfilemethod ftpMethod
= set_ftpfilemethod conn ftpMethod
1089 method set_localport port
= set_localport conn port
1090 method set_localportrange range
= set_localportrange conn range
1091 method set_connectonly flag
= set_connectonly conn flag
1092 method set_maxsendspeedlarge speed
= set_maxsendspeedlarge conn speed
1093 method set_maxrecvspeedlarge speed
= set_maxrecvspeedlarge conn speed
1094 method set_ftpalternativetouser user
= set_ftpalternativetouser conn user
1095 method set_sslsessionidcache flag
= set_sslsessionidcache conn flag
1096 method set_sshauthtypes types
= set_sshauthtypes conn types
1097 method set_sshpublickeyfile keyfile
= set_sshpublickeyfile conn keyfile
1098 method set_sshprivatekeyfile keyfile
= set_sshprivatekeyfile conn keyfile
1099 method set_ftpsslccc ccc
= set_ftpsslccc conn ccc
1100 method set_timeoutms ms
= set_timeoutms conn ms
1101 method set_connecttimeoutms ms
= set_connecttimeoutms conn ms
1102 method set_httptransferdecoding flag
= set_httptransferdecoding conn flag
1103 method set_httpcontentdecoding flag
= set_httpcontentdecoding conn flag
1104 method set_newfileperms perms
= set_newfileperms conn perms
1105 method set_newdirectoryperms perms
= set_newdirectoryperms conn perms
1106 method set_post301 flag
= set_post301 conn flag
1107 method set_sshhostpublickeymd5 key
= set_sshhostpublickeymd5 conn key
1108 method set_copypostfields post
= set_copypostfields conn post
1109 method set_proxytransfermode flag
= set_proxytransfermode conn flag
1110 method set_seekfunction closure
= set_seekfunction conn closure
1112 method get_effectiveurl = get_effectiveurl conn
1113 method get_responsecode = get_responsecode conn
1114 method get_httpcode = get_responsecode conn
1115 method get_totaltime = get_totaltime conn
1116 method get_namelookuptime = get_namelookuptime conn
1117 method get_connecttime = get_connecttime conn
1118 method get_pretransfertime = get_pretransfertime conn
1119 method get_sizeupload = get_sizeupload conn
1120 method get_sizedownload = get_sizedownload conn
1121 method get_speeddownload = get_speeddownload conn
1122 method get_speedupload = get_speedupload conn
1123 method get_headersize = get_headersize conn
1124 method get_requestsize = get_requestsize conn
1125 method get_sslverifyresult = get_sslverifyresult conn
1126 method get_filetime = get_filetime conn
1127 method get_contentlengthdownload = get_contentlengthdownload conn
1128 method get_contentlengthupload = get_contentlengthupload conn
1129 method get_starttransfertime = get_starttransfertime conn
1130 method get_contenttype = get_contenttype conn
1131 method get_redirecttime = get_redirecttime conn
1132 method get_redirectcount = get_redirectcount conn
1133 method get_private = get_private conn
1134 method get_httpconnectcode = get_httpconnectcode conn
1135 method get_httpauthavail = get_httpauthavail conn
1136 method get_proxyauthavail = get_proxyauthavail conn
1137 method get_oserrno = get_oserrno conn
1138 method get_numconnects = get_numconnects conn
1139 method get_sslengines = get_sslengines conn
1140 method get_cookielist = get_cookielist conn
1141 method get_lastsocket = get_lastsocket conn
1142 method get_ftpentrypath = get_ftpentrypath conn
1145 module Multi
= struct
1149 external create
: unit -> mt
= "caml_curl_multi_init"
1150 external add
: mt
-> t
-> unit = "caml_curl_multi_add_handle"
1151 external perform : mt
-> int = "caml_curl_multi_perform_all"
1152 external wait
: mt
-> bool = "caml_curlm_wait_data"
1153 external remove_finished
: mt
-> t
option = "caml_curlm_remove_finished"
1154 external cleanup : mt
-> unit = "caml_curl_multi_cleanup"