4 * Copyright (c) 2003-2008, Lars Nilsson, <lars@quantumchamaeleon.com>
5 * Copyright (c) 2009, ygrek, <ygrek@autistici.org>
16 | CURLE_UNSUPPORTED_PROTOCOL
19 | CURLE_URL_MALFORMAT_USER
20 | CURLE_COULDNT_RESOLVE_PROXY
21 | CURLE_COULDNT_RESOLVE_HOST
22 | CURLE_COULDNT_CONNECT
23 | CURLE_FTP_WEIRD_SERVER_REPLY
24 | CURLE_FTP_ACCESS_DENIED
25 | CURLE_FTP_USER_PASSWORD_INCORRECT
26 | CURLE_FTP_WEIRD_PASS_REPLY
27 | CURLE_FTP_WEIRD_USER_REPLY
28 | CURLE_FTP_WEIRD_PASV_REPLY
29 | CURLE_FTP_WEIRD_227_FORMAT
30 | CURLE_FTP_CANT_GET_HOST
31 | CURLE_FTP_CANT_RECONNECT
32 | CURLE_FTP_COULDNT_SET_BINARY
34 | CURLE_FTP_COULDNT_RETR_FILE
35 | CURLE_FTP_WRITE_ERROR
36 | CURLE_FTP_QUOTE_ERROR
37 | CURLE_HTTP_NOT_FOUND
39 | CURLE_MALFORMAT_USER
40 | CURLE_FTP_COULDNT_STOR_FILE
43 | CURLE_OPERATION_TIMEOUTED
44 | CURLE_FTP_COULDNT_SET_ASCII
45 | CURLE_FTP_PORT_FAILED
46 | CURLE_FTP_COULDNT_USE_REST
47 | CURLE_FTP_COULDNT_GET_SIZE
48 | CURLE_HTTP_RANGE_ERROR
49 | CURLE_HTTP_POST_ERROR
50 | CURLE_SSL_CONNECT_ERROR
51 | CURLE_FTP_BAD_DOWNLOAD_RESUME
52 | CURLE_FILE_COULDNT_READ_FILE
53 | CURLE_LDAP_CANNOT_BIND
54 | CURLE_LDAP_SEARCH_FAILED
55 | CURLE_LIBRARY_NOT_FOUND
56 | CURLE_FUNCTION_NOT_FOUND
57 | CURLE_ABORTED_BY_CALLBACK
58 | CURLE_BAD_FUNCTION_ARGUMENT
59 | CURLE_BAD_CALLING_ORDER
60 | CURLE_HTTP_PORT_FAILED
61 | CURLE_BAD_PASSWORD_ENTERED
62 | CURLE_TOO_MANY_REDIRECTS
63 | CURLE_UNKNOWN_TELNET_OPTION
64 | CURLE_TELNET_OPTION_SYNTAX
66 | CURLE_SSL_PEER_CERTIFICATE
68 | CURLE_SSL_ENGINE_NOTFOUND
69 | CURLE_SSL_ENGINE_SETFAILED
73 | CURLE_SSL_CERTPROBLEM
76 | CURLE_BAD_CONTENT_ENCODING
77 | CURLE_LDAP_INVALID_URL
78 | CURLE_FILESIZE_EXCEEDED
79 | CURLE_USE_SSL_FAILED
80 | CURLE_SEND_FAIL_REWIND
81 | CURLE_SSL_ENGINE_INITFAILED
85 | CURLE_REMOTE_DISK_FULL
87 | CURLE_TFTP_UNKNOWNID
88 | CURLE_REMOTE_FILE_EXISTS
89 | CURLE_TFTP_NOSUCHUSER
92 | CURLE_SSL_CACERT_BADFILE
93 | CURLE_REMOTE_FILE_NOT_FOUND
95 | CURLE_SSL_SHUTDOWN_FAILED
98 exception CurlException
of (curlCode
* int * string)
100 (** exception raised when trying to use options missing from libcurl headers,
101 argument is the option name *)
102 exception NotImplemented
of string
104 type curlNETRCOption
=
105 | CURL_NETRC_OPTIONAL
107 | CURL_NETRC_REQUIRED
110 | CURL_ENCODING_NONE
(* identity *)
111 | CURL_ENCODING_DEFLATE
(* deflate *)
112 | CURL_ENCODING_GZIP
(* gzip *)
113 | CURL_ENCODING_ANY
(* all supported encodings *)
115 type curlContentType
=
117 | CONTENTTYPE
of string
120 | CURLFORM_CONTENT
of string * string * curlContentType
121 | CURLFORM_FILECONTENT
of string * string * curlContentType
122 | CURLFORM_FILE
of string * string * curlContentType
123 | CURLFORM_BUFFER
of string * string * string * curlContentType
127 | CURLFORM_COPYNAME of string
128 | CURLFORM_PTRNAME of string
129 | CURLFORM_NAMELENGTH of int
130 | CURLFORM_COPYCONTENTS of string
131 | CURLFORM_PTRCONTENTS of string
132 | CURLFORM_FILE of string
133 | CURLFORM_FILECONTENT of string
134 | CURLFORM_CONTENTSLENGTH of int
135 | CURLFORM_CONTENTTYPE of string
138 type curlSSLVersion
=
139 | SSLVERSION_DEFAULT
(** attempt to figure out the remote SSL protocol version *)
140 | SSLVERSION_TLSv1
(** TLSv1.x *)
141 | SSLVERSION_SSLv2
(** SSLv2 *)
142 | SSLVERSION_SSLv3
(** SSLv3 *)
143 | SSLVERSION_TLSv1_0
(** Added in libcurl 7.34.0, will request TLSv1.x in previous versions *)
144 | SSLVERSION_TLSv1_1
(** Added in libcurl 7.34.0, will request TLSv1.x in previous versions *)
145 | SSLVERSION_TLSv1_2
(** Added in libcurl 7.34.0, will request TLSv1.x in previous versions *)
146 | SSLVERSION_TLSv1_3
(** Added in libcurl 7.52.0, will request TLSv1.x in previous versions *)
148 type curlTimeCondition
=
149 | TIMECOND_NONE
(** since 0.6.1 *)
150 | TIMECOND_IFMODSINCE
151 | TIMECOND_IFUNMODSINCE
152 | TIMECOND_LASTMOD
(** since 0.6.1 *)
161 type curlClosePolicy
=
163 | CLOSEPOLICY_LEAST_RECENTLY_USED
165 type curlSSLVerifyHost
=
166 | SSLVERIFYHOST_NONE
(** connection succeeds regardless of the names in the certificate *)
167 | SSLVERIFYHOST_EXISTENCE
(** deprecated, equivalent to SSLVERIFYHOST_HOSTNAME *)
168 | SSLVERIFYHOST_HOSTNAME
(** certificate must indicate the matching hostname, or the connection fails *)
170 type curlHTTPVersion
=
171 | HTTP_VERSION_NONE
(** libcurl will make the best choice *)
172 | HTTP_VERSION_1_0
(** please use HTTP 1.0 *)
173 | HTTP_VERSION_1_1
(** please use HTTP 1.1 *)
174 | HTTP_VERSION_2
(** please use HTTP 2 *)
175 | HTTP_VERSION_2TLS
(** use version 2 for HTTPS, version 1.1 for HTTP *)
179 | DEBUGTYPE_HEADER_IN
180 | DEBUGTYPE_HEADER_OUT
183 | DEBUGTYPE_SSL_DATA_IN
184 | DEBUGTYPE_SSL_DATA_OUT
190 | CURLAUTH_GSSNEGOTIATE
206 type curlFTPSSLAuth
=
220 type curlSeekResult
=
229 | FTPMETHOD_SINGLECWD
231 type curlSSHAuthTypes
=
250 | CURLPROXY_HTTP_1_0
(** since libcurl 7.19.4 *)
251 | CURLPROXY_SOCKS4
(** since libcurl 7.15.2 *)
253 | CURLPROXY_SOCKS4A
(** since libcurl 7.18.0 *)
254 | CURLPROXY_SOCKS5_HOSTNAME
(** since libcurl 7.18.0 *)
256 type curlMIMEPartData
=
257 | CURLMIME_DATA
of string
258 | CURLMIME_FILEDATA
of string
260 type curlMIMEEncoding
=
264 | CURLMIME_QUOTEDPRINTABLE
270 encoding
: curlMIMEEncoding
;
271 headers
: string list
;
272 subparts
: curlMIMEPart list
;
273 data
: curlMIMEPartData
;
276 (** Protocols to enable (via CURLOPT_PROTOCOLS and CURLOPT_REDIR_PROTOCOLS) *)
278 | CURLPROTO_ALL
(** enable everything *)
306 (** if flag is not supported by libcurl - enabling it does nothing *)
311 | REDIR_POST_303
(** added in libcurl 7.26.0 *)
314 | CURLOPT_WRITEFUNCTION
of (string -> int)
315 | CURLOPT_READFUNCTION
of (int -> string)
316 | CURLOPT_INFILESIZE
of int
317 | CURLOPT_URL
of string
318 | CURLOPT_PROXY
of string
319 | CURLOPT_PROXYPORT
of int
320 | CURLOPT_HTTPPROXYTUNNEL
of bool
321 | CURLOPT_VERBOSE
of bool
322 | CURLOPT_HEADER
of bool
323 | CURLOPT_NOPROGRESS
of bool
324 | CURLOPT_NOSIGNAL
of bool
325 | CURLOPT_NOBODY
of bool
326 | CURLOPT_FAILONERROR
of bool
327 | CURLOPT_UPLOAD
of bool
328 | CURLOPT_POST
of bool
329 | CURLOPT_FTPLISTONLY
of bool
330 | CURLOPT_FTPAPPEND
of bool
331 | CURLOPT_NETRC
of curlNETRCOption
332 | CURLOPT_ENCODING
of curlEncoding
333 | CURLOPT_FOLLOWLOCATION
of bool
334 | CURLOPT_TRANSFERTEXT
of bool
335 | CURLOPT_PUT
of bool
336 | CURLOPT_USERPWD
of string
337 | CURLOPT_PROXYUSERPWD
of string
338 | CURLOPT_RANGE
of string
339 | CURLOPT_ERRORBUFFER
of string ref
340 | CURLOPT_TIMEOUT
of int
341 | CURLOPT_POSTFIELDS
of string
342 | CURLOPT_POSTFIELDSIZE
of int
343 | CURLOPT_REFERER
of string
344 | CURLOPT_USERAGENT
of string
345 | CURLOPT_FTPPORT
of string
346 | CURLOPT_LOWSPEEDLIMIT
of int
347 | CURLOPT_LOWSPEEDTIME
of int
348 | CURLOPT_RESUMEFROM
of int
349 | CURLOPT_COOKIE
of string
350 | CURLOPT_HTTPHEADER
of string list
351 | CURLOPT_HTTPPOST
of curlHTTPPost list
352 | CURLOPT_SSLCERT
of string
353 | CURLOPT_SSLCERTTYPE
of string
354 | CURLOPT_SSLCERTPASSWD
of string
355 | CURLOPT_SSLKEY
of string
356 | CURLOPT_SSLKEYTYPE
of string
357 | CURLOPT_SSLKEYPASSWD
of string
358 | CURLOPT_SSLENGINE
of string
359 | CURLOPT_SSLENGINEDEFAULT
of bool
360 | CURLOPT_CRLF
of bool
361 | CURLOPT_QUOTE
of string list
362 | CURLOPT_POSTQUOTE
of string list
363 | CURLOPT_HEADERFUNCTION
of (string -> int)
364 | CURLOPT_COOKIEFILE
of string
365 | CURLOPT_SSLVERSION
of curlSSLVersion
366 | CURLOPT_TIMECONDITION
of curlTimeCondition
367 | CURLOPT_TIMEVALUE
of int32
368 | CURLOPT_CUSTOMREQUEST
of string
369 | CURLOPT_INTERFACE
of string
370 | CURLOPT_KRB4LEVEL
of curlKRB4Level
371 | CURLOPT_PROGRESSFUNCTION
of (float -> float -> float -> float -> bool)
372 | CURLOPT_SSLVERIFYPEER
of bool
373 | CURLOPT_CAINFO
of string
374 | CURLOPT_CAPATH
of string
375 | CURLOPT_FILETIME
of bool
376 | CURLOPT_MAXREDIRS
of int
377 | CURLOPT_MAXCONNECTS
of int
378 | CURLOPT_CLOSEPOLICY
of curlClosePolicy
379 | CURLOPT_FRESHCONNECT
of bool
380 | CURLOPT_FORBIDREUSE
of bool
381 | CURLOPT_RANDOMFILE
of string
382 | CURLOPT_EGDSOCKET
of string
383 | CURLOPT_CONNECTTIMEOUT
of int
384 | CURLOPT_HTTPGET
of bool
385 | CURLOPT_SSLVERIFYHOST
of curlSSLVerifyHost
386 | CURLOPT_COOKIEJAR
of string
387 | CURLOPT_SSLCIPHERLIST
of string
388 | CURLOPT_HTTPVERSION
of curlHTTPVersion
389 | CURLOPT_FTPUSEEPSV
of bool
390 | CURLOPT_DNSCACHETIMEOUT
of int
391 | CURLOPT_DNSUSEGLOBALCACHE
of bool
392 | CURLOPT_DEBUGFUNCTION
of (t
-> curlDebugType
-> string -> unit)
393 | CURLOPT_PRIVATE
of string (** doesn't employ libcurl's CURLOPT_PRIVATE *)
394 | CURLOPT_HTTP200ALIASES
of string list
395 | CURLOPT_UNRESTRICTEDAUTH
of bool
396 | CURLOPT_FTPUSEEPRT
of bool
397 | CURLOPT_HTTPAUTH
of curlAuth list
398 | CURLOPT_FTPCREATEMISSINGDIRS
of bool
399 | CURLOPT_PROXYAUTH
of curlAuth list
400 | CURLOPT_FTPRESPONSETIMEOUT
of int
401 | CURLOPT_IPRESOLVE
of curlIPResolve
402 | CURLOPT_MAXFILESIZE
of int32
403 | CURLOPT_INFILESIZELARGE
of int64
404 | CURLOPT_RESUMEFROMLARGE
of int64
405 | CURLOPT_MAXFILESIZELARGE
of int64
406 | CURLOPT_NETRCFILE
of string
407 | CURLOPT_FTPSSL
of curlFTPSSL
408 | CURLOPT_POSTFIELDSIZELARGE
of int64
409 | CURLOPT_TCPNODELAY
of bool
410 | CURLOPT_FTPSSLAUTH
of curlFTPSSLAuth
411 | CURLOPT_IOCTLFUNCTION
of (t
-> curlIOCmd
-> curlIOErr
)
412 | CURLOPT_FTPACCOUNT
of string
413 | CURLOPT_COOKIELIST
of string
414 | CURLOPT_IGNORECONTENTLENGTH
of bool
415 | CURLOPT_FTPSKIPPASVIP
of bool
416 | CURLOPT_FTPFILEMETHOD
of curlFTPMethod
417 | CURLOPT_LOCALPORT
of int
418 | CURLOPT_LOCALPORTRANGE
of int
419 | CURLOPT_CONNECTONLY
of bool
420 | CURLOPT_MAXSENDSPEEDLARGE
of int64
421 | CURLOPT_MAXRECVSPEEDLARGE
of int64
422 | CURLOPT_FTPALTERNATIVETOUSER
of string
423 | CURLOPT_SSLSESSIONIDCACHE
of bool
424 | CURLOPT_SSHAUTHTYPES
of curlSSHAuthTypes list
425 | CURLOPT_SSHPUBLICKEYFILE
of string
426 | CURLOPT_SSHPRIVATEKEYFILE
of string
427 | CURLOPT_FTPSSLCCC
of curlFTPSSLCCC
428 | CURLOPT_TIMEOUTMS
of int
429 | CURLOPT_CONNECTTIMEOUTMS
of int
430 | CURLOPT_HTTPTRANSFERDECODING
of bool
431 | CURLOPT_HTTPCONTENTDECODING
of bool
432 | CURLOPT_NEWFILEPERMS
of int
433 | CURLOPT_NEWDIRECTORYPERMS
of int
434 | CURLOPT_POST301
of bool
435 | CURLOPT_SSHHOSTPUBLICKEYMD5
of string
436 | CURLOPT_COPYPOSTFIELDS
of string
437 | CURLOPT_PROXYTRANSFERMODE
of bool
438 | CURLOPT_SEEKFUNCTION
of (int64
-> curlSeek
-> curlSeekResult
)
439 | CURLOPT_AUTOREFERER
of bool
440 | CURLOPT_OPENSOCKETFUNCTION
of (Unix.file_descr
-> unit)
441 | CURLOPT_PROXYTYPE
of curlProxyType
442 | CURLOPT_PROTOCOLS
of curlProto list
443 | CURLOPT_REDIR_PROTOCOLS
of curlProto list
444 | CURLOPT_RESOLVE
of string list
445 | CURLOPT_DNS_SERVERS
of string
446 | CURLOPT_MAIL_FROM
of string
447 | CURLOPT_MAIL_RCPT
of string list
448 | CURLOPT_PIPEWAIT
of bool
449 | CURLOPT_CERTINFO
of bool
450 | CURLOPT_USERNAME
of string
451 | CURLOPT_PASSWORD
of string
452 | CURLOPT_LOGIN_OPTIONS
of string
453 | CURLOPT_CONNECT_TO
of string list
454 | CURLOPT_POSTREDIR
of curlPostRedir list
455 | CURLOPT_MIMEPOST
of curlMIMEPart list
(* @since libcurl 7.56.0 *)
460 | CURLINIT_GLOBALWIN32
461 | CURLINIT_GLOBALNOTHING
464 | CURLINFO_EFFECTIVE_URL
466 | CURLINFO_RESPONSE_CODE
467 | CURLINFO_TOTAL_TIME
468 | CURLINFO_NAMELOOKUP_TIME
469 | CURLINFO_CONNECT_TIME
470 | CURLINFO_PRETRANSFER_TIME
471 | CURLINFO_SIZE_UPLOAD
472 | CURLINFO_SIZE_DOWNLOAD
473 | CURLINFO_SPEED_DOWNLOAD
474 | CURLINFO_SPEED_UPLOAD
475 | CURLINFO_HEADER_SIZE
476 | CURLINFO_REQUEST_SIZE
477 | CURLINFO_SSL_VERIFYRESULT
479 | CURLINFO_CONTENT_LENGTH_DOWNLOAD
480 | CURLINFO_CONTENT_LENGTH_UPLOAD
481 | CURLINFO_STARTTRANSFER_TIME
482 | CURLINFO_CONTENT_TYPE
483 | CURLINFO_REDIRECT_TIME
484 | CURLINFO_REDIRECT_COUNT
485 | CURLINFO_PRIVATE
(** returns value previously set with CURLOPT_PRIVATE, doesn't employ libcurl's CURLINFO_PRIVATE *)
486 | CURLINFO_HTTP_CONNECTCODE
487 | CURLINFO_HTTPAUTH_AVAIL
488 | CURLINFO_PROXYAUTH_AVAIL
490 | CURLINFO_NUM_CONNECTS
491 | CURLINFO_SSL_ENGINES
492 | CURLINFO_COOKIELIST
493 | CURLINFO_LASTSOCKET
494 | CURLINFO_FTP_ENTRY_PATH
495 | CURLINFO_REDIRECT_URL
496 | CURLINFO_PRIMARY_IP
498 | CURLINFO_LOCAL_PORT
499 | CURLINFO_CONDITION_UNMET
502 type curlInfoResult
=
503 | CURLINFO_String
of string
504 | CURLINFO_Long
of int
505 | CURLINFO_Double
of float
506 | CURLINFO_StringList
of string list
507 | CURLINFO_StringListList
of string list list
509 type version_info
= {
511 number
: int * int * int;
513 features
: string list
;
514 ssl_version
: string option;
515 libz_version
: string option;
516 protocols
: string list
;
517 ares
: string; (** starting from this field are optional features - may be empty/zero *)
521 libssh_version
: string;
524 type pauseOption
= PAUSE_SEND
| PAUSE_RECV
| PAUSE_ALL
526 (** {2 curl_easy API} *)
528 val global_init
: initOption
-> unit
529 val global_cleanup
: unit -> unit
531 val reset
: t
-> unit
532 (** Reset [t] to the default state *)
533 val duphandle
: t
-> t
[@@ocaml
.deprecated
"collect options and apply to fresh handle explicitly instead"]
534 (** Create the new handle, copying all the options from the supplied [t].
535 Note that it will also copy [set_writefunction] options and alike, as such both
536 handles (original and new one) will be referencing the same closures, potentially
537 sharing some state, which may lead to surprising results.
538 @deprecated collect options and apply to fresh handle explicitly instead, see also https://github.com/ygrek/ocurl/issues/31
540 val setopt
: t
-> curlOption
-> unit
541 (** @raise NotImplemented for not implemented option *)
542 val perform
: t
-> unit
543 val cleanup
: t
-> unit
544 val getinfo
: t
-> curlInfo
-> curlInfoResult
545 val escape
: string -> string
546 val unescape
: string -> string
547 val getdate
: string -> float -> float
548 val version
: unit -> string
549 val strerror
: curlCode
-> string
550 val int_of_curlCode
: curlCode
-> int
551 val curlCode_of_int
: int -> curlCode
option
552 (** same as [int_of_curlCode] *)
553 val errno
: curlCode
-> int
554 val version_info
: unit -> version_info
555 val pause
: t
-> pauseOption list
-> unit
557 (** {2 Set transfer options}
559 All callback functions shouldn't raise exceptions.
560 Any exception raised in callback function will be silently caught and discared,
561 and transfer will be aborted. *)
563 val set_writefunction
: t
-> (string -> int) -> unit
564 val set_readfunction
: t
-> (int -> string) -> unit
565 (** [readfunction n] should return string of length at most [n], otherwise
566 transfer will be aborted (as if with exception) *)
567 val set_infilesize
: t
-> int -> unit
568 val set_url
: t
-> string -> unit
569 val set_proxy
: t
-> string -> unit
570 val set_proxyport
: t
-> int -> unit
571 val set_httpproxytunnel
: t
-> bool -> unit
572 val set_verbose
: t
-> bool -> unit
573 val set_header
: t
-> bool -> unit
574 val set_noprogress
: t
-> bool -> unit
575 val set_nosignal
: t
-> bool -> unit
576 val set_nobody
: t
-> bool -> unit
577 val set_failonerror
: t
-> bool -> unit
578 val set_upload
: t
-> bool -> unit
579 val set_post
: t
-> bool -> unit
580 val set_ftplistonly
: t
-> bool -> unit
581 val set_ftpappend
: t
-> bool -> unit
582 val set_netrc
: t
-> curlNETRCOption
-> unit
583 val set_encoding
: t
-> curlEncoding
-> unit
584 val set_followlocation
: t
-> bool -> unit
585 val set_transfertext
: t
-> bool -> unit
586 val set_put
: t
-> bool -> unit
587 val set_userpwd
: t
-> string -> unit
588 val set_proxyuserpwd
: t
-> string -> unit
589 val set_range
: t
-> string -> unit
590 val set_errorbuffer
: t
-> string ref -> unit
591 val set_timeout
: t
-> int -> unit
592 val set_postfields
: t
-> string -> unit
593 val set_postfieldsize
: t
-> int -> unit
594 val set_referer
: t
-> string -> unit
595 val set_useragent
: t
-> string -> unit
596 val set_ftpport
: t
-> string -> unit
597 val set_lowspeedlimit
: t
-> int -> unit
598 val set_lowspeedtime
: t
-> int -> unit
599 val set_resumefrom
: t
-> int -> unit
600 val set_cookie
: t
-> string -> unit
601 val set_httpheader
: t
-> string list
-> unit
602 val set_httppost
: t
-> curlHTTPPost list
-> unit
603 val set_sslcert
: t
-> string -> unit
604 val set_sslcerttype
: t
-> string -> unit
605 val set_sslcertpasswd
: t
-> string -> unit
606 val set_sslkey
: t
-> string -> unit
607 val set_sslkeytype
: t
-> string -> unit
608 val set_sslkeypasswd
: t
-> string -> unit
609 val set_sslengine
: t
-> string -> unit
610 val set_sslenginedefault
: t
-> bool -> unit
611 val set_certinfo
: t
-> bool -> unit
612 val set_crlf
: t
-> bool -> unit
613 val set_quote
: t
-> string list
-> unit
614 val set_postquote
: t
-> string list
-> unit
615 val set_headerfunction
: t
-> (string -> int) -> unit
616 val set_cookiefile
: t
-> string -> unit
617 val set_sslversion
: t
-> curlSSLVersion
-> unit
618 val set_timecondition
: t
-> curlTimeCondition
-> unit
619 val set_timevalue
: t
-> int32
-> unit
620 val set_customrequest
: t
-> string -> unit
621 val set_interface
: t
-> string -> unit
622 val set_krb4level
: t
-> curlKRB4Level
-> unit
623 val set_progressfunction
: t
-> (float -> float -> float -> float -> bool) -> unit
624 val set_sslverifypeer
: t
-> bool -> unit
625 val set_cainfo
: t
-> string -> unit
626 val set_capath
: t
-> string -> unit
627 val set_filetime
: t
-> bool -> unit
628 val set_maxredirs
: t
-> int -> unit
629 val set_maxconnects
: t
-> int -> unit
630 val set_closepolicy
: t
-> curlClosePolicy
-> unit
631 val set_freshconnect
: t
-> bool -> unit
632 val set_forbidreuse
: t
-> bool -> unit
633 val set_randomfile
: t
-> string -> unit
634 val set_egdsocket
: t
-> string -> unit
635 val set_connecttimeout
: t
-> int -> unit
636 val set_httpget
: t
-> bool -> unit
637 val set_sslverifyhost
: t
-> curlSSLVerifyHost
-> unit
638 val set_cookiejar
: t
-> string -> unit
639 val set_sslcipherlist
: t
-> string -> unit
640 val set_httpversion
: t
-> curlHTTPVersion
-> unit
641 val set_ftpuseepsv
: t
-> bool -> unit
642 val set_dnscachetimeout
: t
-> int -> unit
643 val set_dnsuseglobalcache
: t
-> bool -> unit
644 val set_debugfunction
: t
-> (t
-> curlDebugType
-> string -> unit) -> unit
645 val set_private
: t
-> string -> unit
646 val set_http200aliases
: t
-> string list
-> unit
647 val set_unrestrictedauth
: t
-> bool -> unit
648 val set_ftpuseeprt
: t
-> bool -> unit
649 val set_httpauth
: t
-> curlAuth list
-> unit
650 val set_ftpcreatemissingdirs
: t
-> bool -> unit
651 val set_proxyauth
: t
-> curlAuth list
-> unit
652 val set_ftpresponsetimeout
: t
-> int -> unit
653 val set_ipresolve
: t
-> curlIPResolve
-> unit
654 val set_maxfilesize
: t
-> int32
-> unit
655 val set_infilesizelarge
: t
-> int64
-> unit
656 val set_resumefromlarge
: t
-> int64
-> unit
657 val set_maxfilesizelarge
: t
-> int64
-> unit
658 val set_netrcfile
: t
-> string -> unit
659 val set_ftpssl
: t
-> curlFTPSSL
-> unit
660 val set_postfieldsizelarge
: t
-> int64
-> unit
661 val set_tcpnodelay
: t
-> bool -> unit
662 val set_ftpsslauth
: t
-> curlFTPSSLAuth
-> unit
663 val set_ioctlfunction
: t
-> (t
-> curlIOCmd
-> curlIOErr
) -> unit
664 val set_ftpaccount
: t
-> string -> unit
665 val set_cookielist
: t
-> string -> unit
666 val set_ignorecontentlength
: t
-> bool -> unit
667 val set_ftpskippasvip
: t
-> bool -> unit
668 val set_ftpfilemethod
: t
-> curlFTPMethod
-> unit
669 val set_localport
: t
-> int -> unit
670 val set_localportrange
: t
-> int -> unit
671 val set_connectonly
: t
-> bool -> unit
672 val set_maxsendspeedlarge
: t
-> int64
-> unit
673 val set_maxrecvspeedlarge
: t
-> int64
-> unit
674 val set_ftpalternativetouser
: t
-> string -> unit
675 val set_sslsessionidcache
: t
-> bool -> unit
676 val set_sshauthtypes
: t
-> curlSSHAuthTypes list
-> unit
677 val set_sshpublickeyfile
: t
-> string -> unit
678 val set_sshprivatekeyfile
: t
-> string -> unit
679 val set_ftpsslccc
: t
-> curlFTPSSLCCC
-> unit
680 val set_timeoutms
: t
-> int -> unit
681 val set_connecttimeoutms
: t
-> int -> unit
682 val set_httptransferdecoding
: t
-> bool -> unit
683 val set_httpcontentdecoding
: t
-> bool -> unit
684 val set_newfileperms
: t
-> int -> unit
685 val set_newdirectoryperms
: t
-> int -> unit
686 val set_post301
: t
-> bool -> unit
687 val set_sshhostpublickeymd5
: t
-> string -> unit
688 val set_copypostfields
: t
-> string -> unit
689 val set_proxytransfermode
: t
-> bool -> unit
690 val set_seekfunction
: t
-> (int64
-> curlSeek
-> curlSeekResult
) -> unit
691 val set_autoreferer
: t
-> bool -> unit
692 val set_opensocketfunction
: t
-> (Unix.file_descr
-> unit) -> unit
693 val set_proxytype
: t
-> curlProxyType
-> unit
694 val set_protocols
: t
-> curlProto list
-> unit
695 val set_redirprotocols
: t
-> curlProto list
-> unit
697 (** [set_resolve t add del] adjusts builtin dns mapping
699 @param add is the (host,port,address) list to add to dns mapping
700 @param del is the (host,port) list to remove from mapping
702 val set_resolve
: t
-> (string * int * string) list
-> (string * int) list
-> unit
703 val set_dns_servers
: t
-> string list
-> unit
704 val set_mailfrom
: t
-> string -> unit
705 val set_mailrcpt
: t
-> string list
-> unit
706 val set_pipewait
: t
-> bool -> unit
707 val set_username
: t
-> string -> unit
709 val set_password
: t
-> string -> unit
711 val set_login_options
: t
-> string -> unit
713 val set_connect_to
: t
-> string list
-> unit
715 val set_postredir
: t
-> curlPostRedir list
-> unit
717 val set_mimepost
: t
-> curlMIMEPart list
-> unit
720 (** {2 Get transfer properties} *)
722 val get_effectiveurl
: t
-> string
723 val get_redirecturl
: t
-> string
724 val get_httpcode
: t
-> int
725 val get_responsecode
: t
-> int
726 val get_totaltime
: t
-> float
727 val get_namelookuptime
: t
-> float
728 val get_connecttime
: t
-> float
729 val get_pretransfertime
: t
-> float
730 val get_sizeupload
: t
-> float
731 val get_sizedownload
: t
-> float
732 val get_speeddownload
: t
-> float
733 val get_speedupload
: t
-> float
734 val get_headersize
: t
-> int
735 val get_requestsize
: t
-> int
736 val get_sslverifyresult
: t
-> int
737 val get_filetime
: t
-> float
738 val get_contentlengthdownload
: t
-> float
739 val get_contentlengthupload
: t
-> float
740 val get_starttransfertime
: t
-> float
741 val get_contenttype
: t
-> string
742 val get_redirecttime
: t
-> float
743 val get_redirectcount
: t
-> int
744 val get_private
: t
-> string
745 val get_httpconnectcode
: t
-> int
746 val get_httpauthavail
: t
-> curlAuth list
747 val get_proxyauthavail
: t
-> curlAuth list
748 val get_oserrno
: t
-> int
749 val get_numconnects
: t
-> int
750 val get_sslengines
: t
-> string list
751 val get_cookielist
: t
-> string list
752 val get_lastsocket
: t
-> int
753 val get_ftpentrypath
: t
-> string
754 val get_primaryip
: t
-> string
755 val get_localip
: t
-> string
756 (** @since 0.5.5 (libcurl 7.21.0) *)
757 val get_localport
: t
-> int
758 (** @since 0.5.5 (libcurl 7.21.0) *)
759 val get_conditionunmet
: t
-> bool
760 (** @since 0.6.1 (libcurl 7.19.4) *)
761 val get_certinfo
: t
-> string list list
763 (** {2 Object interface} *)
769 method cleanup
: unit
770 method duphandle
: 'a
771 method perform
: unit
773 method set_writefunction
: (string -> int) -> unit
774 method set_readfunction
: (int -> string) -> unit
775 method set_infilesize
: int -> unit
776 method set_url
: string -> unit
777 method set_proxy
: string -> unit
778 method set_proxyport
: int -> unit
779 method set_httpproxytunnel
: bool -> unit
780 method set_verbose
: bool -> unit
781 method set_header
: bool -> unit
782 method set_noprogress
: bool -> unit
783 method set_nosignal
: bool -> unit
784 method set_nobody
: bool -> unit
785 method set_failonerror
: bool -> unit
786 method set_upload
: bool -> unit
787 method set_post
: bool -> unit
788 method set_ftplistonly
: bool -> unit
789 method set_ftpappend
: bool -> unit
790 method set_netrc
: curlNETRCOption
-> unit
791 method set_encoding
: curlEncoding
-> unit
792 method set_followlocation
: bool -> unit
793 method set_transfertext
: bool -> unit
794 method set_put
: bool -> unit
795 method set_userpwd
: string -> unit
796 method set_proxyuserpwd
: string -> unit
797 method set_range
: string -> unit
798 method set_errorbuffer
: string ref -> unit
799 method set_timeout
: int -> unit
800 method set_postfields
: string -> unit
801 method set_postfieldsize
: int -> unit
802 method set_referer
: string -> unit
803 method set_useragent
: string -> unit
804 method set_ftpport
: string -> unit
805 method set_lowspeedlimit
: int -> unit
806 method set_lowspeedtime
: int -> unit
807 method set_resumefrom
: int -> unit
808 method set_cookie
: string -> unit
809 method set_httpheader
: string list
-> unit
810 method set_httppost
: curlHTTPPost list
-> unit
811 method set_sslcert
: string -> unit
812 method set_sslcerttype
: string -> unit
813 method set_sslcertpasswd
: string -> unit
814 method set_sslkey
: string -> unit
815 method set_sslkeytype
: string -> unit
816 method set_sslkeypasswd
: string -> unit
817 method set_sslengine
: string -> unit
818 method set_sslenginedefault
: bool -> unit
819 method set_certinfo
: bool -> unit
820 method set_crlf
: bool -> unit
821 method set_quote
: string list
-> unit
822 method set_postquote
: string list
-> unit
823 method set_headerfunction
: (string -> int) -> unit
824 method set_cookiefile
: string -> unit
825 method set_sslversion
: curlSSLVersion
-> unit
826 method set_timecondition
: curlTimeCondition
-> unit
827 method set_timevalue
: int32
-> unit
828 method set_customrequest
: string -> unit
829 method set_interface
: string -> unit
830 method set_krb4level
: curlKRB4Level
-> unit
831 method set_progressfunction
:
832 (float -> float -> float -> float -> bool) -> unit
833 method set_sslverifypeer
: bool -> unit
834 method set_cainfo
: string -> unit
835 method set_capath
: string -> unit
836 method set_filetime
: bool -> unit
837 method set_maxredirs
: int -> unit
838 method set_maxconnects
: int -> unit
839 method set_closepolicy
: curlClosePolicy
-> unit
840 method set_freshconnect
: bool -> unit
841 method set_forbidreuse
: bool -> unit
842 method set_randomfile
: string -> unit
843 method set_egdsocket
: string -> unit
844 method set_connecttimeout
: int -> unit
845 method set_httpget
: bool -> unit
846 method set_sslverifyhost
: curlSSLVerifyHost
-> unit
847 method set_cookiejar
: string -> unit
848 method set_sslcipherlist
: string -> unit
849 method set_httpversion
: curlHTTPVersion
-> unit
850 method set_ftpuseepsv
: bool -> unit
851 method set_dnscachetimeout
: int -> unit
852 method set_dnsuseglobalcache
: bool -> unit
853 method set_debugfunction
: (t
-> curlDebugType
-> string -> unit) -> unit
854 method set_private
: string -> unit
855 method set_http200aliases
: string list
-> unit
856 method set_unrestrictedauth
: bool -> unit
857 method set_ftpuseeprt
: bool -> unit
858 method set_httpauth
: curlAuth list
-> unit
859 method set_ftpcreatemissingdirs
: bool -> unit
860 method set_proxyauth
: curlAuth list
-> unit
861 method set_ftpresponsetimeout
: int -> unit
862 method set_ipresolve
: curlIPResolve
-> unit
863 method set_maxfilesize
: int32
-> unit
864 method set_infilesizelarge
: int64
-> unit
865 method set_resumefromlarge
: int64
-> unit
866 method set_maxfilesizelarge
: int64
-> unit
867 method set_netrcfile
: string -> unit
868 method set_ftpssl
: curlFTPSSL
-> unit
869 method set_postfieldsizelarge
: int64
-> unit
870 method set_tcpnodelay
: bool -> unit
871 method set_ftpsslauth
: curlFTPSSLAuth
-> unit
872 method set_ioctlfunction
: (t
-> curlIOCmd
-> curlIOErr
) -> unit
873 method set_ftpaccount
: string -> unit
874 method set_cookielist
: string -> unit
875 method set_ignorecontentlength
: bool -> unit
876 method set_ftpskippasvip
: bool -> unit
877 method set_ftpfilemethod
: curlFTPMethod
-> unit
878 method set_localport
: int -> unit
879 method set_localportrange
: int -> unit
880 method set_connectonly
: bool -> unit
881 method set_maxsendspeedlarge
: int64
-> unit
882 method set_maxrecvspeedlarge
: int64
-> unit
883 method set_ftpalternativetouser
: string -> unit
884 method set_sslsessionidcache
: bool -> unit
885 method set_sshauthtypes
: curlSSHAuthTypes list
-> unit
886 method set_sshpublickeyfile
: string -> unit
887 method set_sshprivatekeyfile
: string -> unit
888 method set_ftpsslccc
: curlFTPSSLCCC
-> unit
889 method set_timeoutms
: int -> unit
890 method set_connecttimeoutms
: int -> unit
891 method set_httptransferdecoding
: bool -> unit
892 method set_httpcontentdecoding
: bool -> unit
893 method set_newfileperms
: int -> unit
894 method set_newdirectoryperms
: int -> unit
895 method set_post301
: bool -> unit
896 method set_sshhostpublickeymd5
: string -> unit
897 method set_copypostfields
: string -> unit
898 method set_proxytransfermode
: bool -> unit
899 method set_seekfunction
: (int64
-> curlSeek
-> curlSeekResult
) -> unit
900 method set_autoreferer
: bool -> unit
901 method set_opensocketfunction
: (Unix.file_descr
-> unit) -> unit
902 method set_proxytype
: curlProxyType
-> unit
903 method set_resolve
: (string * int * string) list
-> (string * int) list
-> unit
904 method set_dns_servers
: string list
-> unit
905 method set_mimepost
: curlMIMEPart list
-> unit
907 method get_effectiveurl
: string
908 method get_redirecturl
: string
909 method get_httpcode
: int
910 method get_responsecode
: int
911 method get_totaltime
: float
912 method get_namelookuptime
: float
913 method get_connecttime
: float
914 method get_pretransfertime
: float
915 method get_sizeupload
: float
916 method get_sizedownload
: float
917 method get_speeddownload
: float
918 method get_speedupload
: float
919 method get_headersize
: int
920 method get_requestsize
: int
921 method get_sslverifyresult
: int
922 method get_filetime
: float
923 method get_contentlengthdownload
: float
924 method get_contentlengthupload
: float
925 method get_starttransfertime
: float
926 method get_contenttype
: string
927 method get_redirecttime
: float
928 method get_redirectcount
: int
929 method get_private
: string
930 method get_httpconnectcode
: int
931 method get_httpauthavail
: curlAuth list
932 method get_proxyauthavail
: curlAuth list
933 method get_oserrno
: int
934 method get_numconnects
: int
935 method get_sslengines
: string list
936 method get_cookielist
: string list
937 method get_lastsocket
: int
938 method get_ftpentrypath
: string
939 method get_primaryip
: string
940 method get_localip
: string
941 method get_localport
: int
942 method get_conditionunmet
: bool
943 method get_certinfo
: string list list
946 (** {2 curl_multi API} *)
948 (** Curl multi stack. Functions may raise [Failure] on critical errors *)
951 (** type of Curl multi stack *)
954 type curlPipelining
= PIPE_NOTHING
| PIPE_HTTP1
| PIPE_MULTIPLEX
956 type curlMultiOption
=
957 | CURLMOPT_PIPELINING
of curlPipelining list
958 | CURLMOPT_MAXCONNECTS
of int
959 | CURLMOPT_MAX_PIPELINE_LENGTH
of int
960 | CURLMOPT_MAX_HOST_CONNECTIONS
of int
962 (** exception raised on internal errors *)
963 exception Error
of string
965 (** create new multi stack *)
966 val create
: unit -> mt
968 (** add handle to multi stack *)
969 val add
: mt
-> t
-> unit
971 (** remove handle from multi stack (effectively halting the transfer) *)
972 val remove
: mt
-> t
-> unit
974 (** perform pending data transfers (if any) on all handles currently in multi stack
975 @return the number of handles that still transfer data *)
976 val perform
: mt
-> int
978 (** wait till there are some active data transfers on multi stack
979 @return whether [perform] should be called *)
980 val wait
: ?timeout_ms
:int -> mt
-> bool
982 (** remove finished handle from the multi stack if any. The returned handle may be reused *)
983 val remove_finished
: mt
-> (t
* curlCode
) option
985 (** destroy multi handle (all transfers are stopped, but individual {!type: Curl.t} handles can be reused) *)
986 val cleanup
: mt
-> unit
988 (** events that should be reported for the socket *)
990 | POLL_NONE
(** none *)
991 | POLL_IN
(** available for reading *)
992 | POLL_OUT
(** available for writing *)
993 | POLL_INOUT
(** both *)
994 | POLL_REMOVE
(** socket not needed anymore *)
998 | EV_AUTO
(** determine socket status automatically (with extra system call) *)
999 | EV_IN
(** socket has incoming data *)
1000 | EV_OUT
(** socket is available for writing *)
1001 | EV_INOUT
(** both *)
1003 (** set the function to receive notifications on what socket events
1004 are currently interesting for libcurl on the specified socket handle *)
1005 val set_socket_function
: mt
-> (Unix.file_descr
-> poll
-> unit) -> unit
1007 (** set the function to receive notification when libcurl internal timeout changes,
1008 timeout value is in milliseconds
1010 NB {!action_timeout} should be called when timeout occurs *)
1011 val set_timer_function
: mt
-> (int -> unit) -> unit
1013 (** perform pending data transfers (if any) on all handles currently in multi stack
1014 (not recommended, {!action} should be used instead)
1015 @return the number of handles that still transfer data
1016 @raise Error on errors
1018 val action_all
: mt
-> int
1020 (** inform libcurl that timeout occured
1021 @raise Error on errors
1023 val action_timeout
: mt
-> unit
1025 (** [action mt fd status] informs libcurl about event on the specified socket.
1026 [status] specifies socket status. Perform pending data transfers.
1027 @return the number of handles still active
1028 @raise Error on errors
1030 val action
: mt
-> Unix.file_descr
-> fd_status
-> int
1032 (** [timeout mt] polls multi handle for timeout (not recommended, use {!set_timer_function} instead).
1033 @return maximum allowed number of milliseconds to wait before calling libcurl to perform actions
1034 @raise Error on errors
1036 external timeout
: mt
-> int = "caml_curl_multi_timeout"
1038 (** @raise NotImplemented for not implemented option *)
1039 val setopt
: mt
-> curlMultiOption
-> unit