4 * Copyright (c) 2003-2008, Lars Nilsson, <lars@quantumchamaeleon.com>
5 * Copyright (c) 2009, ygrek, <ygrek@autistici.org>
12 | CURLE_UNSUPPORTED_PROTOCOL
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
30 | CURLE_FTP_COULDNT_RETR_FILE
31 | CURLE_FTP_WRITE_ERROR
32 | CURLE_FTP_QUOTE_ERROR
33 | CURLE_HTTP_NOT_FOUND
35 | CURLE_MALFORMAT_USER
36 | CURLE_FTP_COULDNT_STOR_FILE
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
62 | CURLE_SSL_PEER_CERTIFICATE
64 | CURLE_SSL_ENGINE_NOTFOUND
65 | CURLE_SSL_ENGINE_SETFAILED
69 | CURLE_SSL_CERTPROBLEM
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
81 | CURLE_REMOTE_DISK_FULL
83 | CURLE_TFTP_UNKNOWNID
84 | CURLE_REMOTE_FILE_EXISTS
85 | CURLE_TFTP_NOSUCHUSER
88 | CURLE_SSL_CACERT_BADFILE
89 | CURLE_REMOTE_FILE_NOT_FOUND
91 | CURLE_SSL_SHUTDOWN_FAILED
94 exception CurlException
of (curlCode
* int * string)
96 type curlNETRCOption
=
103 | CURL_ENCODING_DEFLATE
107 type curlContentType
=
109 | CONTENTTYPE
of string
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
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 curlSSLVersion
=
140 type curlTimeCondition
=
142 | TIMECOND_IFMODSINCE
143 | TIMECOND_IFUNMODSINCE
153 type curlClosePolicy
=
155 | CLOSEPOLICY_LEAST_RECENTLY_USED
157 type curlSSLVerifyHost
=
159 | SSLVERIFYHOST_EXISTENCE
160 | SSLVERIFYHOST_HOSTNAME
162 type curlHTTPVersion
=
171 | DEBUGTYPE_HEADER_IN
172 | DEBUGTYPE_HEADER_OUT
180 | CURLAUTH_GSSNEGOTIATE
196 type curlFTPSSLAuth
=
210 type curlSeekResult
=
219 | FTPMETHOD_SINGLECWD
221 type curlSSHAuthTypes
=
240 | CURLPROXY_HTTP_1_0
(** added in 7.19.4 *)
241 | CURLPROXY_SOCKS4
(** added in 7.15.2 *)
243 | CURLPROXY_SOCKS4A
(** added in 7.18.0 *)
244 | CURLPROXY_SOCKS5_HOSTNAME
(** added in 7.18.0 *)
246 (** Protocols to enable (via CURLOPT_PROTOCOLS and CURLOPT_REDIR_PROTOCOLS) *)
248 | CURLPROTO_ALL
(** enable everything *)
277 | CURLOPT_WRITEFUNCTION
of (string -> int)
278 | CURLOPT_READFUNCTION
of (int -> string)
279 | CURLOPT_INFILESIZE
of int
280 | CURLOPT_URL
of string
281 | CURLOPT_PROXY
of string
282 | CURLOPT_PROXYPORT
of int
283 | CURLOPT_HTTPPROXYTUNNEL
of bool
284 | CURLOPT_VERBOSE
of bool
285 | CURLOPT_HEADER
of bool
286 | CURLOPT_NOPROGRESS
of bool
287 | CURLOPT_NOSIGNAL
of bool
288 | CURLOPT_NOBODY
of bool
289 | CURLOPT_FAILONERROR
of bool
290 | CURLOPT_UPLOAD
of bool
291 | CURLOPT_POST
of bool
292 | CURLOPT_FTPLISTONLY
of bool
293 | CURLOPT_FTPAPPEND
of bool
294 | CURLOPT_NETRC
of curlNETRCOption
295 | CURLOPT_ENCODING
of curlEncoding
296 | CURLOPT_FOLLOWLOCATION
of bool
297 | CURLOPT_TRANSFERTEXT
of bool
298 | CURLOPT_PUT
of bool
299 | CURLOPT_USERPWD
of string
300 | CURLOPT_PROXYUSERPWD
of string
301 | CURLOPT_RANGE
of string
302 | CURLOPT_ERRORBUFFER
of string ref
303 | CURLOPT_TIMEOUT
of int
304 | CURLOPT_POSTFIELDS
of string
305 | CURLOPT_POSTFIELDSIZE
of int
306 | CURLOPT_REFERER
of string
307 | CURLOPT_USERAGENT
of string
308 | CURLOPT_FTPPORT
of string
309 | CURLOPT_LOWSPEEDLIMIT
of int
310 | CURLOPT_LOWSPEEDTIME
of int
311 | CURLOPT_RESUMEFROM
of int
312 | CURLOPT_COOKIE
of string
313 | CURLOPT_HTTPHEADER
of string list
314 | CURLOPT_HTTPPOST
of curlHTTPPost list
315 | CURLOPT_SSLCERT
of string
316 | CURLOPT_SSLCERTTYPE
of string
317 | CURLOPT_SSLCERTPASSWD
of string
318 | CURLOPT_SSLKEY
of string
319 | CURLOPT_SSLKEYTYPE
of string
320 | CURLOPT_SSLKEYPASSWD
of string
321 | CURLOPT_SSLENGINE
of string
322 | CURLOPT_SSLENGINEDEFAULT
of bool
323 | CURLOPT_CRLF
of bool
324 | CURLOPT_QUOTE
of string list
325 | CURLOPT_POSTQUOTE
of string list
326 | CURLOPT_HEADERFUNCTION
of (string -> int)
327 | CURLOPT_COOKIEFILE
of string
328 | CURLOPT_SSLVERSION
of curlSSLVersion
329 | CURLOPT_TIMECONDITION
of curlTimeCondition
330 | CURLOPT_TIMEVALUE
of int32
331 | CURLOPT_CUSTOMREQUEST
of string
332 | CURLOPT_INTERFACE
of string
333 | CURLOPT_KRB4LEVEL
of curlKRB4Level
334 | CURLOPT_PROGRESSFUNCTION
of (float -> float -> float -> float -> bool)
335 | CURLOPT_SSLVERIFYPEER
of bool
336 | CURLOPT_CAINFO
of string
337 | CURLOPT_CAPATH
of string
338 | CURLOPT_FILETIME
of bool
339 | CURLOPT_MAXREDIRS
of int
340 | CURLOPT_MAXCONNECTS
of int
341 | CURLOPT_CLOSEPOLICY
of curlClosePolicy
342 | CURLOPT_FRESHCONNECT
of bool
343 | CURLOPT_FORBIDREUSE
of bool
344 | CURLOPT_RANDOMFILE
of string
345 | CURLOPT_EGDSOCKET
of string
346 | CURLOPT_CONNECTTIMEOUT
of int
347 | CURLOPT_HTTPGET
of bool
348 | CURLOPT_SSLVERIFYHOST
of curlSSLVerifyHost
349 | CURLOPT_COOKIEJAR
of string
350 | CURLOPT_SSLCIPHERLIST
of string
351 | CURLOPT_HTTPVERSION
of curlHTTPVersion
352 | CURLOPT_FTPUSEEPSV
of bool
353 | CURLOPT_DNSCACHETIMEOUT
of int
354 | CURLOPT_DNSUSEGLOBALCACHE
of bool
355 | CURLOPT_DEBUGFUNCTION
of (t
-> curlDebugType
-> string -> unit)
356 | CURLOPT_PRIVATE
of string
357 | CURLOPT_HTTP200ALIASES
of string list
358 | CURLOPT_UNRESTRICTEDAUTH
of bool
359 | CURLOPT_FTPUSEEPRT
of bool
360 | CURLOPT_HTTPAUTH
of curlAuth list
361 | CURLOPT_FTPCREATEMISSINGDIRS
of bool
362 | CURLOPT_PROXYAUTH
of curlAuth list
363 | CURLOPT_FTPRESPONSETIMEOUT
of int
364 | CURLOPT_IPRESOLVE
of curlIPResolve
365 | CURLOPT_MAXFILESIZE
of int32
366 | CURLOPT_INFILESIZELARGE
of int64
367 | CURLOPT_RESUMEFROMLARGE
of int64
368 | CURLOPT_MAXFILESIZELARGE
of int64
369 | CURLOPT_NETRCFILE
of string
370 | CURLOPT_FTPSSL
of curlFTPSSL
371 | CURLOPT_POSTFIELDSIZELARGE
of int64
372 | CURLOPT_TCPNODELAY
of bool
373 | CURLOPT_FTPSSLAUTH
of curlFTPSSLAuth
374 | CURLOPT_IOCTLFUNCTION
of (t
-> curlIOCmd
-> curlIOErr
)
375 | CURLOPT_FTPACCOUNT
of string
376 | CURLOPT_COOKIELIST
of string
377 | CURLOPT_IGNORECONTENTLENGTH
of bool
378 | CURLOPT_FTPSKIPPASVIP
of bool
379 | CURLOPT_FTPFILEMETHOD
of curlFTPMethod
380 | CURLOPT_LOCALPORT
of int
381 | CURLOPT_LOCALPORTRANGE
of int
382 | CURLOPT_CONNECTONLY
of bool
383 | CURLOPT_MAXSENDSPEEDLARGE
of int64
384 | CURLOPT_MAXRECVSPEEDLARGE
of int64
385 | CURLOPT_FTPALTERNATIVETOUSER
of string
386 | CURLOPT_SSLSESSIONIDCACHE
of bool
387 | CURLOPT_SSHAUTHTYPES
of curlSSHAuthTypes list
388 | CURLOPT_SSHPUBLICKEYFILE
of string
389 | CURLOPT_SSHPRIVATEKEYFILE
of string
390 | CURLOPT_FTPSSLCCC
of curlFTPSSLCCC
391 | CURLOPT_TIMEOUTMS
of int
392 | CURLOPT_CONNECTTIMEOUTMS
of int
393 | CURLOPT_HTTPTRANSFERDECODING
of bool
394 | CURLOPT_HTTPCONTENTDECODING
of bool
395 | CURLOPT_NEWFILEPERMS
of int
396 | CURLOPT_NEWDIRECTORYPERMS
of int
397 | CURLOPT_POST301
of bool
398 | CURLOPT_SSHHOSTPUBLICKEYMD5
of string
399 | CURLOPT_COPYPOSTFIELDS
of string
400 | CURLOPT_PROXYTRANSFERMODE
of bool
401 | CURLOPT_SEEKFUNCTION
of (int64
-> curlSeek
-> curlSeekResult
)
402 | CURLOPT_AUTOREFERER
of bool
403 | CURLOPT_OPENSOCKETFUNCTION
of (Unix.file_descr
-> unit)
404 | CURLOPT_PROXYTYPE
of curlProxyType
405 | CURLOPT_PROTOCOLS
of curlProto list
406 | CURLOPT_REDIR_PROTOCOLS
of curlProto list
407 | CURLOPT_RESOLVE
of string list
408 | CURLOPT_DNS_SERVERS
of string
409 | CURLOPT_MAIL_FROM
of string
410 | CURLOPT_MAIL_RCPT
of string list
411 | CURLOPT_PIPEWAIT
of bool
412 | CURLOPT_CERTINFO
of bool
417 | CURLINIT_GLOBALWIN32
418 | CURLINIT_GLOBALNOTHING
421 | CURLINFO_EFFECTIVE_URL
423 | CURLINFO_RESPONSE_CODE
424 | CURLINFO_TOTAL_TIME
425 | CURLINFO_NAMELOOKUP_TIME
426 | CURLINFO_CONNECT_TIME
427 | CURLINFO_PRETRANSFER_TIME
428 | CURLINFO_SIZE_UPLOAD
429 | CURLINFO_SIZE_DOWNLOAD
430 | CURLINFO_SPEED_DOWNLOAD
431 | CURLINFO_SPEED_UPLOAD
432 | CURLINFO_HEADER_SIZE
433 | CURLINFO_REQUEST_SIZE
434 | CURLINFO_SSL_VERIFYRESULT
436 | CURLINFO_CONTENT_LENGTH_DOWNLOAD
437 | CURLINFO_CONTENT_LENGTH_UPLOAD
438 | CURLINFO_STARTTRANSFER_TIME
439 | CURLINFO_CONTENT_TYPE
440 | CURLINFO_REDIRECT_TIME
441 | CURLINFO_REDIRECT_COUNT
443 | CURLINFO_HTTP_CONNECTCODE
444 | CURLINFO_HTTPAUTH_AVAIL
445 | CURLINFO_PROXYAUTH_AVAIL
447 | CURLINFO_NUM_CONNECTS
448 | CURLINFO_SSL_ENGINES
449 | CURLINFO_COOKIELIST
450 | CURLINFO_LASTSOCKET
451 | CURLINFO_FTP_ENTRY_PATH
452 | CURLINFO_REDIRECT_URL
453 | CURLINFO_PRIMARY_IP
455 | CURLINFO_LOCAL_PORT
456 | CURLINFO_CONDITION_UNMET
459 type curlInfoResult
=
460 | CURLINFO_String
of string
461 | CURLINFO_Long
of int
462 | CURLINFO_Double
of float
463 | CURLINFO_StringList
of string list
464 | CURLINFO_StringListList
of string list list
466 exception NotImplemented
of string
468 let () = Callback.register_exception
"Curl.NotImplemented" (NotImplemented
"")
470 external helper_global_init
: initOption
-> unit = "helper_curl_global_init"
471 external helper_global_cleanup
: unit -> unit = "helper_curl_global_cleanup"
472 external helper_init
: unit -> t
= "helper_curl_easy_init"
473 external helper_duphandle
: t
-> t
= "helper_curl_easy_duphandle"
474 external helper_setopt
: t
-> curlOption
-> unit = "helper_curl_easy_setopt"
475 external helper_perform
: t
-> unit = "helper_curl_easy_perform"
476 external helper_cleanup
: t
-> unit = "helper_curl_easy_cleanup"
477 external helper_getinfo
: t
-> curlInfo
-> curlInfoResult
= "helper_curl_easy_getinfo"
478 external helper_escape
: string -> string = "helper_curl_escape"
479 external helper_unescape
: string -> string = "helper_curl_unescape"
480 external helper_getdate
: string -> float -> float = "helper_curl_getdate"
481 external helper_version
: unit -> string = "helper_curl_version"
486 external reset
: t
-> unit = "helper_curl_easy_reset"
489 helper_duphandle conn
491 let setopt conn
option =
492 helper_setopt conn
option
503 let global_init initOption
=
504 helper_global_init initOption
506 let global_cleanup () =
507 helper_global_cleanup
()
515 let getdate str now
=
516 helper_getdate str now
521 type version_info
= {
523 number
: int * int * int;
525 features
: string list
;
526 ssl_version
: string option;
527 libz_version
: string option;
528 protocols
: string list
;
533 libssh_version
: string;
536 external version_info
: unit -> version_info
= "caml_curl_version_info"
538 external strerror
: curlCode
-> string = "helper_curl_easy_strerror"
539 let errno : curlCode
-> int = Obj.magic
541 type pauseOption
= PAUSE_SEND
| PAUSE_RECV
| PAUSE_ALL
543 external pause
: t
-> pauseOption list
-> unit = "caml_curl_pause"
545 let set_writefunction conn closure
=
546 setopt conn
(CURLOPT_WRITEFUNCTION closure
)
548 let set_readfunction conn closure
=
549 setopt conn
(CURLOPT_READFUNCTION closure
)
551 let set_infilesize conn size
=
552 setopt conn
(CURLOPT_INFILESIZE size
)
554 let set_url conn url
=
555 setopt conn
(CURLOPT_URL url
)
557 let set_proxy conn proxy
=
558 setopt conn
(CURLOPT_PROXY proxy
)
560 let set_proxyport conn proxyport
=
561 setopt conn
(CURLOPT_PROXYPORT proxyport
)
563 let set_httpproxytunnel conn flag
=
564 setopt conn
(CURLOPT_HTTPPROXYTUNNEL flag
)
566 let set_verbose conn flag
=
567 setopt conn
(CURLOPT_VERBOSE flag
)
569 let set_header conn flag
=
570 setopt conn
(CURLOPT_HEADER flag
)
572 let set_noprogress conn flag
=
573 setopt conn
(CURLOPT_NOPROGRESS flag
)
575 let set_nosignal conn flag
=
576 setopt conn
(CURLOPT_NOSIGNAL flag
)
578 let set_nobody conn flag
=
579 setopt conn
(CURLOPT_NOBODY flag
)
581 let set_failonerror conn flag
=
582 setopt conn
(CURLOPT_FAILONERROR flag
)
584 let set_upload conn flag
=
585 setopt conn
(CURLOPT_UPLOAD flag
)
587 let set_post conn flag
=
588 setopt conn
(CURLOPT_POST flag
)
590 let set_ftplistonly conn flag
=
591 setopt conn
(CURLOPT_FTPLISTONLY flag
)
593 let set_ftpappend conn flag
=
594 setopt conn
(CURLOPT_FTPAPPEND flag
)
596 let set_netrc conn netrc
=
597 setopt conn
(CURLOPT_NETRC netrc
)
599 let set_encoding conn encoding
=
600 setopt conn
(CURLOPT_ENCODING encoding
)
602 let set_followlocation conn flag
=
603 setopt conn
(CURLOPT_FOLLOWLOCATION flag
)
605 let set_transfertext conn flag
=
606 setopt conn
(CURLOPT_TRANSFERTEXT flag
)
608 let set_put conn flag
=
609 setopt conn
(CURLOPT_PUT flag
)
611 let set_userpwd conn userpwd
=
612 setopt conn
(CURLOPT_USERPWD userpwd
)
614 let set_proxyuserpwd conn proxyuserpwd
=
615 setopt conn
(CURLOPT_PROXYUSERPWD proxyuserpwd
)
617 let set_range conn range
=
618 setopt conn
(CURLOPT_RANGE range
)
620 let set_errorbuffer conn errorbuffer
=
621 setopt conn
(CURLOPT_ERRORBUFFER errorbuffer
)
623 let set_timeout conn timeout
=
624 setopt conn
(CURLOPT_TIMEOUT timeout
)
626 let set_postfields conn postfields
=
627 setopt conn
(CURLOPT_POSTFIELDS postfields
)
629 let set_postfieldsize conn postfieldsize
=
630 setopt conn
(CURLOPT_POSTFIELDSIZE postfieldsize
)
632 let set_referer conn referer
=
633 setopt conn
(CURLOPT_REFERER referer
)
635 let set_useragent conn useragent
=
636 setopt conn
(CURLOPT_USERAGENT useragent
)
638 let set_ftpport conn ftpport
=
639 setopt conn
(CURLOPT_FTPPORT ftpport
)
641 let set_lowspeedlimit conn lowspeedlimit
=
642 setopt conn
(CURLOPT_LOWSPEEDLIMIT lowspeedlimit
)
644 let set_lowspeedtime conn lowspeedtime
=
645 setopt conn
(CURLOPT_LOWSPEEDTIME lowspeedtime
)
647 let set_resumefrom conn resumefrom
=
648 setopt conn
(CURLOPT_RESUMEFROM resumefrom
)
650 let set_cookie conn cookie
=
651 setopt conn
(CURLOPT_COOKIE cookie
)
653 let set_httpheader conn httpheader
=
654 setopt conn
(CURLOPT_HTTPHEADER httpheader
)
656 let set_httppost conn httppost
=
657 setopt conn
(CURLOPT_HTTPPOST httppost
)
659 let set_sslcert conn sslcert
=
660 setopt conn
(CURLOPT_SSLCERT sslcert
)
662 let set_sslcerttype conn sslcerttype
=
663 setopt conn
(CURLOPT_SSLCERTTYPE sslcerttype
)
665 let set_sslcertpasswd conn sslcertpasswd
=
666 setopt conn
(CURLOPT_SSLCERTPASSWD sslcertpasswd
)
668 let set_sslkey conn sslkey
=
669 setopt conn
(CURLOPT_SSLKEY sslkey
)
671 let set_sslkeytype conn sslkeytype
=
672 setopt conn
(CURLOPT_SSLKEYTYPE sslkeytype
)
674 let set_sslkeypasswd conn sslkeypasswd
=
675 setopt conn
(CURLOPT_SSLKEYPASSWD sslkeypasswd
)
677 let set_sslengine conn sslengine
=
678 setopt conn
(CURLOPT_SSLENGINE sslengine
)
680 let set_sslenginedefault conn flag
=
681 setopt conn
(CURLOPT_SSLENGINEDEFAULT flag
)
683 let set_certinfo conn flag
=
684 setopt conn
(CURLOPT_CERTINFO flag
)
686 let set_crlf conn flag
=
687 setopt conn
(CURLOPT_CRLF flag
)
689 let set_quote conn quote
=
690 setopt conn
(CURLOPT_QUOTE quote
)
692 let set_postquote conn postquote
=
693 setopt conn
(CURLOPT_POSTQUOTE postquote
)
695 let set_headerfunction conn closure
=
696 setopt conn
(CURLOPT_HEADERFUNCTION closure
)
698 let set_cookiefile conn cookiefile
=
699 setopt conn
(CURLOPT_COOKIEFILE cookiefile
)
701 let set_sslversion conn sslversion
=
702 setopt conn
(CURLOPT_SSLVERSION sslversion
)
704 let set_timecondition conn timecondition
=
705 setopt conn
(CURLOPT_TIMECONDITION timecondition
)
707 let set_timevalue conn timevalue
=
708 setopt conn
(CURLOPT_TIMEVALUE timevalue
)
710 let set_customrequest conn customrequest
=
711 setopt conn
(CURLOPT_CUSTOMREQUEST customrequest
)
713 let set_interface conn interface
=
714 setopt conn
(CURLOPT_INTERFACE interface
)
716 let set_krb4level conn krb4level
=
717 setopt conn
(CURLOPT_KRB4LEVEL krb4level
)
719 let set_progressfunction conn closure
=
720 setopt conn
(CURLOPT_PROGRESSFUNCTION closure
)
722 let set_sslverifypeer conn flag
=
723 setopt conn
(CURLOPT_SSLVERIFYPEER flag
)
725 let set_cainfo conn cainfo
=
726 setopt conn
(CURLOPT_CAINFO cainfo
)
728 let set_capath conn capath
=
729 setopt conn
(CURLOPT_CAPATH capath
)
731 let set_filetime conn filetime
=
732 setopt conn
(CURLOPT_FILETIME filetime
)
734 let set_maxredirs conn maxredirs
=
735 setopt conn
(CURLOPT_MAXREDIRS maxredirs
)
737 let set_maxconnects conn maxconnects
=
738 setopt conn
(CURLOPT_MAXCONNECTS maxconnects
)
740 let set_closepolicy conn closepolicy
=
741 setopt conn
(CURLOPT_CLOSEPOLICY closepolicy
)
743 let set_freshconnect conn flag
=
744 setopt conn
(CURLOPT_FRESHCONNECT flag
)
746 let set_forbidreuse conn flag
=
747 setopt conn
(CURLOPT_FORBIDREUSE flag
)
749 let set_randomfile conn randomfile
=
750 setopt conn
(CURLOPT_RANDOMFILE randomfile
)
752 let set_egdsocket conn egdsocket
=
753 setopt conn
(CURLOPT_EGDSOCKET egdsocket
)
755 let set_connecttimeout conn connecttimeout
=
756 setopt conn
(CURLOPT_CONNECTTIMEOUT connecttimeout
)
758 let set_httpget conn flag
=
759 setopt conn
(CURLOPT_HTTPGET flag
)
761 let set_sslverifyhost conn sslverifyhost
=
762 setopt conn
(CURLOPT_SSLVERIFYHOST sslverifyhost
)
764 let set_cookiejar conn cookiejar
=
765 setopt conn
(CURLOPT_COOKIEJAR cookiejar
)
767 let set_sslcipherlist conn sslcipherlist
=
768 setopt conn
(CURLOPT_SSLCIPHERLIST sslcipherlist
)
770 let set_httpversion conn httpversion
=
771 setopt conn
(CURLOPT_HTTPVERSION httpversion
)
773 let set_ftpuseepsv conn flag
=
774 setopt conn
(CURLOPT_FTPUSEEPSV flag
)
776 let set_dnscachetimeout conn dnscachetimeout
=
777 setopt conn
(CURLOPT_DNSCACHETIMEOUT dnscachetimeout
)
779 let set_dnsuseglobalcache conn flag
=
780 setopt conn
(CURLOPT_DNSUSEGLOBALCACHE flag
)
782 let set_debugfunction conn closure
=
783 setopt conn
(CURLOPT_DEBUGFUNCTION closure
)
785 let set_private conn privateData
=
786 setopt conn
(CURLOPT_PRIVATE privateData
)
788 let set_http200aliases conn aliases
=
789 setopt conn
(CURLOPT_HTTP200ALIASES aliases
)
791 let set_unrestrictedauth conn flag
=
792 setopt conn
(CURLOPT_UNRESTRICTEDAUTH flag
)
794 let set_ftpuseeprt conn flag
=
795 setopt conn
(CURLOPT_FTPUSEEPRT flag
)
797 let set_httpauth conn auth
=
798 setopt conn
(CURLOPT_HTTPAUTH auth
)
800 let set_ftpcreatemissingdirs conn flag
=
801 setopt conn
(CURLOPT_FTPCREATEMISSINGDIRS flag
)
803 let set_proxyauth conn auth
=
804 setopt conn
(CURLOPT_PROXYAUTH auth
)
806 let set_ftpresponsetimeout conn timeout
=
807 setopt conn
(CURLOPT_FTPRESPONSETIMEOUT timeout
)
809 let set_ipresolve conn ipresolve
=
810 setopt conn
(CURLOPT_IPRESOLVE ipresolve
)
812 let set_maxfilesize conn size
=
813 setopt conn
(CURLOPT_MAXFILESIZE size
)
815 let set_infilesizelarge conn size
=
816 setopt conn
(CURLOPT_INFILESIZELARGE size
)
818 let set_resumefromlarge conn size
=
819 setopt conn
(CURLOPT_RESUMEFROMLARGE size
)
821 let set_maxfilesizelarge conn size
=
822 setopt conn
(CURLOPT_MAXFILESIZELARGE size
)
824 let set_netrcfile conn file
=
825 setopt conn
(CURLOPT_NETRCFILE file
)
827 let set_ftpssl conn ftpssl
=
828 setopt conn
(CURLOPT_FTPSSL ftpssl
)
830 let set_postfieldsizelarge conn size
=
831 setopt conn
(CURLOPT_POSTFIELDSIZELARGE size
)
833 let set_tcpnodelay conn flag
=
834 setopt conn
(CURLOPT_TCPNODELAY flag
)
836 let set_ftpsslauth conn auth
=
837 setopt conn
(CURLOPT_FTPSSLAUTH auth
)
839 let set_ioctlfunction conn closure
=
840 setopt conn
(CURLOPT_IOCTLFUNCTION closure
)
842 let set_ftpaccount conn account
=
843 setopt conn
(CURLOPT_FTPACCOUNT account
)
845 let set_cookielist conn cookielist
=
846 setopt conn
(CURLOPT_COOKIELIST cookielist
)
848 let set_ignorecontentlength conn flag
=
849 setopt conn
(CURLOPT_IGNORECONTENTLENGTH flag
)
851 let set_ftpskippasvip conn flag
=
852 setopt conn
(CURLOPT_FTPSKIPPASVIP flag
)
854 let set_ftpfilemethod conn ftpMethod
=
855 setopt conn
(CURLOPT_FTPFILEMETHOD ftpMethod
)
857 let set_localport conn port
=
858 setopt conn
(CURLOPT_LOCALPORT port
)
860 let set_localportrange conn range
=
861 setopt conn
(CURLOPT_LOCALPORTRANGE range
)
863 let set_connectonly conn flag
=
864 setopt conn
(CURLOPT_CONNECTONLY flag
)
866 let set_maxsendspeedlarge conn speed
=
867 setopt conn
(CURLOPT_MAXSENDSPEEDLARGE speed
)
869 let set_maxrecvspeedlarge conn speed
=
870 setopt conn
(CURLOPT_MAXRECVSPEEDLARGE speed
)
872 let set_ftpalternativetouser conn user
=
873 setopt conn
(CURLOPT_FTPALTERNATIVETOUSER user
)
875 let set_sslsessionidcache conn flag
=
876 setopt conn
(CURLOPT_SSLSESSIONIDCACHE flag
)
878 let set_sshauthtypes conn types
=
879 setopt conn
(CURLOPT_SSHAUTHTYPES types
)
881 let set_sshpublickeyfile conn keyfile
=
882 setopt conn
(CURLOPT_SSHPUBLICKEYFILE keyfile
)
884 let set_sshprivatekeyfile conn keyfile
=
885 setopt conn
(CURLOPT_SSHPRIVATEKEYFILE keyfile
)
887 let set_ftpsslccc conn ccc
=
888 setopt conn
(CURLOPT_FTPSSLCCC ccc
)
890 let set_timeoutms conn ms
=
891 setopt conn
(CURLOPT_TIMEOUTMS ms
)
893 let set_connecttimeoutms conn ms
=
894 setopt conn
(CURLOPT_CONNECTTIMEOUTMS ms
)
896 let set_httptransferdecoding conn flag
=
897 setopt conn
(CURLOPT_HTTPTRANSFERDECODING flag
)
899 let set_httpcontentdecoding conn flag
=
900 setopt conn
(CURLOPT_HTTPCONTENTDECODING flag
)
902 let set_newfileperms conn perms
=
903 setopt conn
(CURLOPT_NEWFILEPERMS perms
)
905 let set_newdirectoryperms conn perms
=
906 setopt conn
(CURLOPT_NEWDIRECTORYPERMS perms
)
908 let set_post301 conn flag
=
909 setopt conn
(CURLOPT_POST301 flag
)
911 let set_sshhostpublickeymd5 conn key
=
912 setopt conn
(CURLOPT_SSHHOSTPUBLICKEYMD5 key
)
914 let set_copypostfields conn post
=
915 setopt conn
(CURLOPT_COPYPOSTFIELDS post
)
917 let set_proxytransfermode conn flag
=
918 setopt conn
(CURLOPT_PROXYTRANSFERMODE flag
)
920 let set_seekfunction conn closure
=
921 setopt conn
(CURLOPT_SEEKFUNCTION closure
)
923 let set_autoreferer conn b
=
924 setopt conn
(CURLOPT_AUTOREFERER b
)
926 let set_opensocketfunction conn closure
=
927 setopt conn
(CURLOPT_OPENSOCKETFUNCTION closure
)
929 let set_proxytype conn ptype
=
930 setopt conn
(CURLOPT_PROXYTYPE ptype
)
932 let set_protocols conn l
=
933 setopt conn
(CURLOPT_PROTOCOLS l
)
935 let set_redirprotocols conn l
=
936 setopt conn
(CURLOPT_REDIR_PROTOCOLS l
)
938 let set_resolve conn l_add l_del
=
939 let acc = List.fold_left
(fun acc (host
,port
,address
) -> (host ^
":" ^ string_of_int port ^
":" ^ address
) :: acc) [] l_add
in
940 let acc = List.fold_left
(fun acc (host
,port
) -> ("-" ^ host ^
":" ^ string_of_int port
) :: acc) acc l_del
in
941 setopt conn
(CURLOPT_RESOLVE
acc)
943 let set_dns_servers conn l
=
944 setopt conn
(CURLOPT_DNS_SERVERS
(String.concat
"," l
))
946 let set_mailfrom conn l
=
947 setopt conn
(CURLOPT_MAIL_FROM l
)
949 let set_mailrcpt conn l
=
950 setopt conn
(CURLOPT_MAIL_RCPT l
)
952 let set_pipewait conn b
=
953 setopt conn
(CURLOPT_PIPEWAIT b
)
955 let get_effectiveurl conn
=
956 match (getinfo conn CURLINFO_EFFECTIVE_URL
) with
957 | CURLINFO_String s
-> s
960 let get_redirecturl conn
=
961 match (getinfo conn CURLINFO_REDIRECT_URL
) with
962 | CURLINFO_String s
-> s
965 let get_responsecode conn
=
966 match (getinfo conn CURLINFO_HTTP_CODE
) with
967 | CURLINFO_Long l
-> l
970 let get_httpcode conn
=
971 get_responsecode conn
973 let get_totaltime conn
=
974 match (getinfo conn CURLINFO_TOTAL_TIME
) with
975 | CURLINFO_Double d
-> d
978 let get_namelookuptime conn
=
979 match (getinfo conn CURLINFO_NAMELOOKUP_TIME
) with
980 | CURLINFO_Double d
-> d
983 let get_connecttime conn
=
984 match (getinfo conn CURLINFO_CONNECT_TIME
) with
985 | CURLINFO_Double d
-> d
988 let get_pretransfertime conn
=
989 match (getinfo conn CURLINFO_PRETRANSFER_TIME
) with
990 | CURLINFO_Double d
-> d
993 let get_sizeupload conn
=
994 match (getinfo conn CURLINFO_SIZE_UPLOAD
) with
995 | CURLINFO_Double d
-> d
998 let get_sizedownload conn
=
999 match (getinfo conn CURLINFO_SIZE_DOWNLOAD
) with
1000 | CURLINFO_Double d
-> d
1003 let get_speeddownload conn
=
1004 match (getinfo conn CURLINFO_SPEED_DOWNLOAD
) with
1005 | CURLINFO_Double d
-> d
1008 let get_speedupload conn
=
1009 match (getinfo conn CURLINFO_SPEED_UPLOAD
) with
1010 | CURLINFO_Double d
-> d
1013 let get_headersize conn
=
1014 match (getinfo conn CURLINFO_HEADER_SIZE
) with
1015 | CURLINFO_Long l
-> l
1018 let get_requestsize conn
=
1019 match (getinfo conn CURLINFO_REQUEST_SIZE
) with
1020 | CURLINFO_Long l
-> l
1023 let get_sslverifyresult conn
=
1024 match (getinfo conn CURLINFO_SSL_VERIFYRESULT
) with
1025 | CURLINFO_Long l
-> l
1028 let get_filetime conn
=
1029 match (getinfo conn CURLINFO_FILETIME
) with
1030 | CURLINFO_Double d
-> d
1033 let get_contentlengthdownload conn
=
1034 match (getinfo conn CURLINFO_CONTENT_LENGTH_DOWNLOAD
) with
1035 | CURLINFO_Double d
-> d
1038 let get_contentlengthupload conn
=
1039 match (getinfo conn CURLINFO_CONTENT_LENGTH_UPLOAD
) with
1040 | CURLINFO_Double d
-> d
1043 let get_starttransfertime conn
=
1044 match (getinfo conn CURLINFO_STARTTRANSFER_TIME
) with
1045 | CURLINFO_Double d
-> d
1048 let get_contenttype conn
=
1049 match (getinfo conn CURLINFO_CONTENT_TYPE
) with
1050 | CURLINFO_String s
-> s
1053 let get_redirecttime conn
=
1054 match (getinfo conn CURLINFO_REDIRECT_TIME
) with
1055 | CURLINFO_Double d
-> d
1058 let get_redirectcount conn
=
1059 match (getinfo conn CURLINFO_REDIRECT_COUNT
) with
1060 | CURLINFO_Long l
-> l
1063 let get_private conn
=
1064 match (getinfo conn CURLINFO_PRIVATE
) with
1065 | CURLINFO_String s
-> s
1068 let get_httpconnectcode conn
=
1069 match (getinfo conn CURLINFO_HTTP_CONNECTCODE
) with
1070 | CURLINFO_Long l
-> l
1073 let get_certinfo conn
=
1074 match (getinfo conn CURLINFO_CERTINFO
) with
1075 | CURLINFO_StringListList l
-> l
1078 let generate_auth auth
=
1079 let result = ref [] in
1080 if auth
land 1 != 0 then result := [CURLAUTH_BASIC
];
1081 if auth
land 2 != 0 then result := CURLAUTH_DIGEST
:: !result;
1082 if auth
land 4 != 0 then result := CURLAUTH_GSSNEGOTIATE
:: !result;
1083 if auth
land 8 != 0 then result := CURLAUTH_NTLM
:: !result;
1086 let get_httpauthavail conn
=
1087 match (getinfo conn CURLINFO_HTTPAUTH_AVAIL
) with
1088 | CURLINFO_Long l
-> generate_auth l
1091 let get_proxyauthavail conn
=
1092 match (getinfo conn CURLINFO_PROXYAUTH_AVAIL
) with
1093 | CURLINFO_Long l
-> generate_auth l
1096 let get_oserrno conn
=
1097 match (getinfo conn CURLINFO_OS_ERRNO
) with
1098 | CURLINFO_Long l
-> l
1101 let get_numconnects conn
=
1102 match (getinfo conn CURLINFO_NUM_CONNECTS
) with
1103 | CURLINFO_Long l
-> l
1106 let get_sslengines conn
=
1107 match (getinfo conn CURLINFO_SSL_ENGINES
) with
1108 | CURLINFO_StringList l
-> l
1111 let get_cookielist conn
=
1112 match (getinfo conn CURLINFO_COOKIELIST
) with
1113 | CURLINFO_StringList l
-> l
1116 let get_lastsocket conn
=
1117 match (getinfo conn CURLINFO_LASTSOCKET
) with
1118 | CURLINFO_Long l
-> l
1121 let get_ftpentrypath conn
=
1122 match (getinfo conn CURLINFO_FTP_ENTRY_PATH
) with
1123 | CURLINFO_String s
-> s
1126 let get_primaryip conn
=
1127 match (getinfo conn CURLINFO_PRIMARY_IP
) with
1128 | CURLINFO_String s
-> s
1131 let get_localip conn
=
1132 match (getinfo conn CURLINFO_LOCAL_IP
) with
1133 | CURLINFO_String s
-> s
1136 let get_localport conn
=
1137 match (getinfo conn CURLINFO_LOCAL_PORT
) with
1138 | CURLINFO_Long n
-> n
1141 let get_conditionunmet conn
=
1142 match (getinfo conn CURLINFO_CONDITION_UNMET
) with
1143 | CURLINFO_Long n
-> n
<> 0
1147 Callback.register_exception
"CurlException"
1148 (CurlException
(CURLE_OK
, 0, ""))
1153 method handle
= conn
1154 method duphandle = {< conn
= duphandle conn
>}
1155 method perform = perform conn
1156 method cleanup = cleanup conn
1157 method set_writefunction closure
= set_writefunction conn closure
1158 method set_readfunction closure
= set_readfunction conn closure
1159 method set_infilesize size
= set_infilesize conn size
1160 method set_url url
= set_url conn url
1161 method set_proxy proxy
= set_proxy conn proxy
1162 method set_proxyport proxyport
= set_proxyport conn proxyport
1163 method set_httpproxytunnel flag
= set_httpproxytunnel conn flag
1164 method set_verbose flag
= set_verbose conn flag
1165 method set_header flag
= set_header conn flag
1166 method set_noprogress flag
= set_noprogress conn flag
1167 method set_nosignal flag
= set_nosignal conn flag
1168 method set_nobody flag
= set_nobody conn flag
1169 method set_failonerror flag
= set_failonerror conn flag
1170 method set_upload flag
= set_upload conn flag
1171 method set_post flag
= set_post conn flag
1172 method set_ftplistonly flag
= set_ftplistonly conn flag
1173 method set_ftpappend flag
= set_ftpappend conn flag
1174 method set_netrc netrc
= set_netrc conn netrc
1175 method set_encoding encoding
= set_encoding conn encoding
1176 method set_followlocation flag
= set_followlocation conn flag
1177 method set_transfertext flag
= set_transfertext conn flag
1178 method set_put flag
= set_put conn flag
1179 method set_userpwd userpwd
= set_userpwd conn userpwd
1180 method set_proxyuserpwd proxyuserpwd
= set_proxyuserpwd conn proxyuserpwd
1181 method set_range range
= set_range conn range
1182 method set_errorbuffer errorbuffer
= set_errorbuffer conn errorbuffer
1183 method set_timeout timeout
= set_timeout conn timeout
1184 method set_postfields postfields
= set_postfields conn postfields
1185 method set_referer referer
= set_referer conn referer
1186 method set_useragent useragent
= set_useragent conn useragent
1187 method set_ftpport ftpport
= set_ftpport conn ftpport
1188 method set_lowspeedlimit lowspeedlimit
= set_lowspeedlimit conn lowspeedlimit
1189 method set_lowspeedtime lowspeedtime
= set_lowspeedtime conn lowspeedtime
1190 method set_resumefrom resumefrom
= set_resumefrom conn resumefrom
1191 method set_cookie cookie
= set_cookie conn cookie
1192 method set_httpheader httpheader
= set_httpheader conn httpheader
1193 method set_httppost httppost
= set_httppost conn httppost
1194 method set_sslcert sslcert
= set_sslcert conn sslcert
1195 method set_sslcerttype sslcerttype
= set_sslcerttype conn sslcerttype
1196 method set_sslcertpasswd sslcertpasswd
= set_sslcertpasswd conn sslcertpasswd
1197 method set_sslkey sslkey
= set_sslkey conn sslkey
1198 method set_sslkeytype sslkeytype
= set_sslkeytype conn sslkeytype
1199 method set_sslkeypasswd sslkeypasswd
= set_sslkeypasswd conn sslkeypasswd
1200 method set_sslengine sslengine
= set_sslengine conn sslengine
1201 method set_sslenginedefault flag
= set_sslenginedefault conn flag
1202 method set_certinfo flag
= set_certinfo conn flag
1203 method set_crlf flag
= set_crlf conn flag
1204 method set_quote quote
= set_quote conn quote
1205 method set_postquote postquote
= set_postquote conn postquote
1206 method set_headerfunction closure
= set_headerfunction conn closure
1207 method set_cookiefile cookiefile
= set_cookiefile conn cookiefile
1208 method set_sslversion sslversion
= set_sslversion conn sslversion
1209 method set_timecondition timecondition
= set_timecondition conn timecondition
1210 method set_timevalue timevalue
= set_timevalue conn timevalue
1211 method set_customrequest customrequest
= set_customrequest conn customrequest
1212 method set_interface interface
= set_interface conn interface
1213 method set_krb4level krb4level
= set_krb4level conn krb4level
1214 method set_progressfunction closure
= set_progressfunction conn closure
1215 method set_sslverifypeer flag
= set_sslverifypeer conn flag
1216 method set_cainfo cainfo
= set_cainfo conn cainfo
1217 method set_capath capath
= set_capath conn capath
1218 method set_filetime filetime
= set_filetime conn filetime
1219 method set_maxredirs maxredirs
= set_maxredirs conn maxredirs
1220 method set_maxconnects maxconnects
= set_maxconnects conn maxconnects
1221 method set_closepolicy closepolicy
= set_closepolicy conn closepolicy
1222 method set_freshconnect flag
= set_freshconnect conn flag
1223 method set_forbidreuse flag
= set_forbidreuse conn flag
1224 method set_randomfile randomfile
= set_randomfile conn randomfile
1225 method set_egdsocket egdsocket
= set_egdsocket conn egdsocket
1226 method set_connecttimeout connecttimeout
=
1227 set_connecttimeout conn connecttimeout
1228 method set_httpget flag
= set_httpget conn flag
1229 method set_sslverifyhost sslverifyhost
= set_sslverifyhost conn sslverifyhost
1230 method set_cookiejar cookiejar
= set_cookiejar conn cookiejar
1231 method set_sslcipherlist sslcipherlist
= set_sslcipherlist conn sslcipherlist
1232 method set_httpversion httpversion
= set_httpversion conn httpversion
1233 method set_ftpuseepsv flag
= set_ftpuseepsv conn flag
1234 method set_dnscachetimeout dnscachetimeout
= set_dnscachetimeout conn dnscachetimeout
1235 method set_dnsuseglobalcache flag
= set_dnsuseglobalcache conn flag
1236 method set_debugfunction closure
= set_debugfunction conn closure
1237 method set_private privateData
= set_private conn privateData
1238 method set_http200aliases aliases
= set_http200aliases conn aliases
1239 method set_unrestrictedauth flag
= set_unrestrictedauth conn flag
1240 method set_ftpuseeprt flag
= set_ftpuseeprt conn flag
1241 method set_httpauth auth
= set_httpauth conn auth
1242 method set_ftpcreatemissingdirs flag
= set_ftpcreatemissingdirs conn flag
1243 method set_proxyauth auth
= set_proxyauth conn auth
1244 method set_ftpresponsetimeout timeout
= set_ftpresponsetimeout conn timeout
1245 method set_ipresolve ipresolve
= set_ipresolve conn ipresolve
1246 method set_maxfilesize size
= set_maxfilesize conn size
1247 method set_infilesizelarge size
= set_infilesizelarge conn size
1248 method set_resumefromlarge size
= set_resumefromlarge conn size
1249 method set_maxfilesizelarge size
= set_maxfilesizelarge conn size
1250 method set_netrcfile file
= set_netrcfile conn file
1251 method set_ftpssl ftpssl
= set_ftpssl conn ftpssl
1252 method set_postfieldsize size
= set_postfieldsize conn size
1253 method set_postfieldsizelarge size
= set_postfieldsizelarge conn size
1254 method set_tcpnodelay flag
= set_tcpnodelay conn flag
1255 method set_ftpsslauth flag
= set_ftpsslauth conn flag
1256 method set_ioctlfunction closure
= set_ioctlfunction conn closure
1257 method set_ftpaccount account
= set_ftpaccount conn account
1258 method set_cookielist cookielist
= set_cookielist conn cookielist
1259 method set_ignorecontentlength flag
= set_ignorecontentlength conn flag
1260 method set_ftpskippasvip flag
= set_ftpskippasvip conn flag
1261 method set_ftpfilemethod ftpMethod
= set_ftpfilemethod conn ftpMethod
1262 method set_localport port
= set_localport conn port
1263 method set_localportrange range
= set_localportrange conn range
1264 method set_connectonly flag
= set_connectonly conn flag
1265 method set_maxsendspeedlarge speed
= set_maxsendspeedlarge conn speed
1266 method set_maxrecvspeedlarge speed
= set_maxrecvspeedlarge conn speed
1267 method set_ftpalternativetouser user
= set_ftpalternativetouser conn user
1268 method set_sslsessionidcache flag
= set_sslsessionidcache conn flag
1269 method set_sshauthtypes types
= set_sshauthtypes conn types
1270 method set_sshpublickeyfile keyfile
= set_sshpublickeyfile conn keyfile
1271 method set_sshprivatekeyfile keyfile
= set_sshprivatekeyfile conn keyfile
1272 method set_ftpsslccc ccc
= set_ftpsslccc conn ccc
1273 method set_timeoutms ms
= set_timeoutms conn ms
1274 method set_connecttimeoutms ms
= set_connecttimeoutms conn ms
1275 method set_httptransferdecoding flag
= set_httptransferdecoding conn flag
1276 method set_httpcontentdecoding flag
= set_httpcontentdecoding conn flag
1277 method set_newfileperms perms
= set_newfileperms conn perms
1278 method set_newdirectoryperms perms
= set_newdirectoryperms conn perms
1279 method set_post301 flag
= set_post301 conn flag
1280 method set_sshhostpublickeymd5 key
= set_sshhostpublickeymd5 conn key
1281 method set_copypostfields post
= set_copypostfields conn post
1282 method set_proxytransfermode flag
= set_proxytransfermode conn flag
1283 method set_seekfunction closure
= set_seekfunction conn closure
1284 method set_resolve l
= set_resolve conn l
1285 method set_dns_servers l
= set_dns_servers conn l
1286 method set_autoreferer b
= set_autoreferer conn b
1287 method set_opensocketfunction closure
= set_opensocketfunction conn closure
1288 method set_proxytype t
= set_proxytype conn t
1290 method get_effectiveurl = get_effectiveurl conn
1291 method get_redirecturl = get_redirecturl conn
1292 method get_responsecode = get_responsecode conn
1293 method get_httpcode = get_responsecode conn
1294 method get_totaltime = get_totaltime conn
1295 method get_namelookuptime = get_namelookuptime conn
1296 method get_connecttime = get_connecttime conn
1297 method get_pretransfertime = get_pretransfertime conn
1298 method get_sizeupload = get_sizeupload conn
1299 method get_sizedownload = get_sizedownload conn
1300 method get_speeddownload = get_speeddownload conn
1301 method get_speedupload = get_speedupload conn
1302 method get_headersize = get_headersize conn
1303 method get_requestsize = get_requestsize conn
1304 method get_sslverifyresult = get_sslverifyresult conn
1305 method get_filetime = get_filetime conn
1306 method get_contentlengthdownload = get_contentlengthdownload conn
1307 method get_contentlengthupload = get_contentlengthupload conn
1308 method get_starttransfertime = get_starttransfertime conn
1309 method get_contenttype = get_contenttype conn
1310 method get_redirecttime = get_redirecttime conn
1311 method get_redirectcount = get_redirectcount conn
1312 method get_private = get_private conn
1313 method get_httpconnectcode = get_httpconnectcode conn
1314 method get_httpauthavail = get_httpauthavail conn
1315 method get_proxyauthavail = get_proxyauthavail conn
1316 method get_oserrno = get_oserrno conn
1317 method get_numconnects = get_numconnects conn
1318 method get_sslengines = get_sslengines conn
1319 method get_cookielist = get_cookielist conn
1320 method get_lastsocket = get_lastsocket conn
1321 method get_ftpentrypath = get_ftpentrypath conn
1322 method get_primaryip = get_primaryip conn
1323 method get_localip = get_localip conn
1324 method get_localport = get_localport conn
1325 method get_conditionunmet = get_conditionunmet conn
1326 method get_certinfo = get_certinfo conn
1329 module Multi
= struct
1333 type curlPipelining
= PIPE_NOTHING
| PIPE_HTTP1
| PIPE_MULTIPLEX
1335 type curlMultiOption
=
1336 | CURLMOPT_PIPELINING
of curlPipelining list
1337 | CURLMOPT_MAXCONNECTS
of int
1338 | CURLMOPT_MAX_PIPELINE_LENGTH
of int
1339 | CURLMOPT_MAX_HOST_CONNECTIONS
of int
1341 exception Error
of string
1343 let () = Callback.register_exception
"Curl.Multi.Error" (Error
"")
1345 external create
: unit -> mt
= "caml_curl_multi_init"
1346 external add
: mt
-> t
-> unit = "caml_curl_multi_add_handle"
1347 external perform : mt
-> int = "caml_curl_multi_perform_all"
1348 external wait
: mt
-> bool = "caml_curlm_wait_data"
1349 external remove
: mt
-> t
-> unit = "caml_curl_multi_remove_handle"
1350 external remove_finished
: mt
-> (t
* curlCode
) option = "caml_curlm_remove_finished"
1351 external cleanup : mt
-> unit = "caml_curl_multi_cleanup"
1353 (* see curlm_sock_cb *)
1354 type poll
= POLL_NONE
| POLL_IN
| POLL_OUT
| POLL_INOUT
| POLL_REMOVE
1356 (* see caml_curl_multi_socket_action *)
1357 type fd_status
= EV_AUTO
| EV_IN
| EV_OUT
| EV_INOUT
1359 external set_socket_function
: mt
-> (Unix.file_descr
-> poll
-> unit) -> unit = "caml_curl_multi_socketfunction"
1360 external set_timer_function
: mt
-> (int -> unit) -> unit = "caml_curl_multi_timerfunction"
1361 external action_all
: mt
-> int = "caml_curl_multi_socket_all"
1362 external socket_action
: mt
-> Unix.file_descr
option -> fd_status
-> int = "caml_curl_multi_socket_action"
1364 let action_timeout mt
= ignore
(socket_action mt None EV_AUTO
)
1365 let action mt fd status
= socket_action mt
(Some fd
) status
1367 external timeout
: mt
-> int = "caml_curl_multi_timeout"
1369 external setopt : mt
-> curlMultiOption
-> unit = "caml_curl_multi_setopt"