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
=
168 | HTTP_VERSION_2_PRIOR_KNOWLEDGE
173 | DEBUGTYPE_HEADER_IN
174 | DEBUGTYPE_HEADER_OUT
177 | DEBUGTYPE_SSL_DATA_IN
178 | DEBUGTYPE_SSL_DATA_OUT
184 | CURLAUTH_GSSNEGOTIATE
200 type curlFTPSSLAuth
=
214 type curlSeekResult
=
223 | FTPMETHOD_SINGLECWD
225 type curlSSHAuthTypes
=
244 | CURLPROXY_HTTP_1_0
(** added in 7.19.4 *)
245 | CURLPROXY_SOCKS4
(** added in 7.15.2 *)
247 | CURLPROXY_SOCKS4A
(** added in 7.18.0 *)
248 | CURLPROXY_SOCKS5_HOSTNAME
(** added in 7.18.0 *)
251 | String
of string (** Equivalent to `CURLMIME_DATA` *)
252 | File
of string (** Equivalent to `CURLMIME_FILEDATA` *)
254 type curlMIMEPartData
=
255 | CURLMIME_DATA
of string
256 | CURLMIME_FILEDATA
of string
257 | CURLMIME_DATA_WITH_NAME
of {
260 filename
: string option;
263 type curlMIMEEncoding
=
267 | CURLMIME_QUOTEDPRINTABLE
273 encoding
: curlMIMEEncoding
;
274 headers
: string list
;
275 subparts
: curlMIMEPart list
;
276 data
: curlMIMEPartData
;
281 | CURLKHMATCH_MISMATCH
of string
282 | CURLKHMATCH_MISSING
285 | CURLKHSTAT_FINE_ADD_TO_FILE
290 (** Protocols to enable (via CURLOPT_PROTOCOLS and CURLOPT_REDIR_PROTOCOLS) *)
292 | CURLPROTO_ALL
(** enable everything *)
320 (* sync curlPostRedir_table *)
328 | CURLSSLOPT_ALLOW_BEAST
329 | CURLSSLOPT_NO_REVOKE
330 | CURLSSLOPT_NO_PARTIALCHAIN
331 | CURLSSLOPT_REVOKE_BEST_EFFORT
332 | CURLSSLOPT_NATIVE_CA
333 | CURLSSLOPT_AUTO_CLIENT_CERT
335 type curlWritefuncOpt
= string -> [`Full
| `Partial
of int | `Pause
]
337 type 'a xfer_result
= Proceed
of 'a
| Pause
| Abort
339 type write_result
= unit xfer_result
340 type read_result
= string xfer_result
342 let proceed = Proceed
()
345 | CURLOPT_WRITEFUNCTION
of (string -> int)
346 | CURLOPT_READFUNCTION
of (int -> string)
347 | CURLOPT_INFILESIZE
of int
348 | CURLOPT_URL
of string
349 | CURLOPT_PROXY
of string
350 | CURLOPT_PROXYPORT
of int
351 | CURLOPT_HTTPPROXYTUNNEL
of bool
352 | CURLOPT_VERBOSE
of bool
353 | CURLOPT_HEADER
of bool
354 | CURLOPT_NOPROGRESS
of bool
355 | CURLOPT_NOSIGNAL
of bool
356 | CURLOPT_NOBODY
of bool
357 | CURLOPT_FAILONERROR
of bool
358 | CURLOPT_UPLOAD
of bool
359 | CURLOPT_POST
of bool
360 | CURLOPT_FTPLISTONLY
of bool
361 | CURLOPT_FTPAPPEND
of bool
362 | CURLOPT_NETRC
of curlNETRCOption
363 | CURLOPT_ENCODING
of curlEncoding
364 | CURLOPT_FOLLOWLOCATION
of bool
365 | CURLOPT_TRANSFERTEXT
of bool
366 | CURLOPT_PUT
of bool
367 | CURLOPT_USERPWD
of string
368 | CURLOPT_PROXYUSERPWD
of string
369 | CURLOPT_RANGE
of string
370 | CURLOPT_ERRORBUFFER
of string ref
371 | CURLOPT_TIMEOUT
of int
372 | CURLOPT_POSTFIELDS
of string
373 | CURLOPT_POSTFIELDSIZE
of int
374 | CURLOPT_REFERER
of string
375 | CURLOPT_USERAGENT
of string
376 | CURLOPT_FTPPORT
of string
377 | CURLOPT_LOWSPEEDLIMIT
of int
378 | CURLOPT_LOWSPEEDTIME
of int
379 | CURLOPT_RESUMEFROM
of int
380 | CURLOPT_COOKIE
of string
381 | CURLOPT_HTTPHEADER
of string list
382 | CURLOPT_HTTPPOST
of curlHTTPPost list
383 | CURLOPT_SSLCERT
of string
384 | CURLOPT_SSLCERTTYPE
of string
385 | CURLOPT_SSLCERTPASSWD
of string
386 | CURLOPT_SSLKEY
of string
387 | CURLOPT_SSLKEYTYPE
of string
388 | CURLOPT_SSLKEYPASSWD
of string
389 | CURLOPT_SSLENGINE
of string
390 | CURLOPT_SSLENGINEDEFAULT
of bool
391 | CURLOPT_CRLF
of bool
392 | CURLOPT_QUOTE
of string list
393 | CURLOPT_POSTQUOTE
of string list
394 | CURLOPT_HEADERFUNCTION
of (string -> int)
395 | CURLOPT_COOKIEFILE
of string
396 | CURLOPT_SSLVERSION
of curlSSLVersion
397 | CURLOPT_TIMECONDITION
of curlTimeCondition
398 | CURLOPT_TIMEVALUE
of int32
399 | CURLOPT_CUSTOMREQUEST
of string
400 | CURLOPT_INTERFACE
of string
401 | CURLOPT_KRB4LEVEL
of curlKRB4Level
402 | CURLOPT_PROGRESSFUNCTION
of (float -> float -> float -> float -> bool)
403 | CURLOPT_SSLVERIFYPEER
of bool
404 | CURLOPT_CAINFO
of string
405 | CURLOPT_CAPATH
of string
406 | CURLOPT_FILETIME
of bool
407 | CURLOPT_MAXREDIRS
of int
408 | CURLOPT_MAXCONNECTS
of int
409 | CURLOPT_CLOSEPOLICY
of curlClosePolicy
410 | CURLOPT_FRESHCONNECT
of bool
411 | CURLOPT_FORBIDREUSE
of bool
412 | CURLOPT_RANDOMFILE
of string
413 | CURLOPT_EGDSOCKET
of string
414 | CURLOPT_CONNECTTIMEOUT
of int
415 | CURLOPT_HTTPGET
of bool
416 | CURLOPT_SSLVERIFYHOST
of curlSSLVerifyHost
417 | CURLOPT_COOKIEJAR
of string
418 | CURLOPT_SSLCIPHERLIST
of string
419 | CURLOPT_HTTPVERSION
of curlHTTPVersion
420 | CURLOPT_FTPUSEEPSV
of bool
421 | CURLOPT_DNSCACHETIMEOUT
of int
422 | CURLOPT_DNSUSEGLOBALCACHE
of bool
423 | CURLOPT_DEBUGFUNCTION
of (t
-> curlDebugType
-> string -> unit)
424 | CURLOPT_PRIVATE
of string
425 | CURLOPT_HTTP200ALIASES
of string list
426 | CURLOPT_UNRESTRICTEDAUTH
of bool
427 | CURLOPT_FTPUSEEPRT
of bool
428 | CURLOPT_HTTPAUTH
of curlAuth list
429 | CURLOPT_FTPCREATEMISSINGDIRS
of bool
430 | CURLOPT_PROXYAUTH
of curlAuth list
431 | CURLOPT_FTPRESPONSETIMEOUT
of int
432 | CURLOPT_IPRESOLVE
of curlIPResolve
433 | CURLOPT_MAXFILESIZE
of int32
434 | CURLOPT_INFILESIZELARGE
of int64
435 | CURLOPT_RESUMEFROMLARGE
of int64
436 | CURLOPT_MAXFILESIZELARGE
of int64
437 | CURLOPT_NETRCFILE
of string
438 | CURLOPT_FTPSSL
of curlFTPSSL
439 | CURLOPT_POSTFIELDSIZELARGE
of int64
440 | CURLOPT_TCPNODELAY
of bool
441 | CURLOPT_TCP_FASTOPEN
of bool
442 | CURLOPT_FTPSSLAUTH
of curlFTPSSLAuth
443 | CURLOPT_IOCTLFUNCTION
of (t
-> curlIOCmd
-> curlIOErr
)
444 | CURLOPT_FTPACCOUNT
of string
445 | CURLOPT_COOKIELIST
of string
446 | CURLOPT_IGNORECONTENTLENGTH
of bool
447 | CURLOPT_FTPSKIPPASVIP
of bool
448 | CURLOPT_FTPFILEMETHOD
of curlFTPMethod
449 | CURLOPT_LOCALPORT
of int
450 | CURLOPT_LOCALPORTRANGE
of int
451 | CURLOPT_CONNECTONLY
of bool
452 | CURLOPT_MAXSENDSPEEDLARGE
of int64
453 | CURLOPT_MAXRECVSPEEDLARGE
of int64
454 | CURLOPT_FTPALTERNATIVETOUSER
of string
455 | CURLOPT_SSLSESSIONIDCACHE
of bool
456 | CURLOPT_SSHAUTHTYPES
of curlSSHAuthTypes list
457 | CURLOPT_SSHPUBLICKEYFILE
of string
458 | CURLOPT_SSHPRIVATEKEYFILE
of string
459 | CURLOPT_FTPSSLCCC
of curlFTPSSLCCC
460 | CURLOPT_TIMEOUTMS
of int
461 | CURLOPT_CONNECTTIMEOUTMS
of int
462 | CURLOPT_HTTPTRANSFERDECODING
of bool
463 | CURLOPT_HTTPCONTENTDECODING
of bool
464 | CURLOPT_NEWFILEPERMS
of int
465 | CURLOPT_NEWDIRECTORYPERMS
of int
466 | CURLOPT_POST301
of bool
467 | CURLOPT_SSHHOSTPUBLICKEYMD5
of string
468 | CURLOPT_COPYPOSTFIELDS
of string
469 | CURLOPT_PROXYTRANSFERMODE
of bool
470 | CURLOPT_SEEKFUNCTION
of (int64
-> curlSeek
-> curlSeekResult
)
471 | CURLOPT_AUTOREFERER
of bool
472 | CURLOPT_OPENSOCKETFUNCTION
of (Unix.file_descr
-> unit)
473 | CURLOPT_CLOSESOCKETFUNCTION
of (Unix.file_descr
-> unit)
474 | CURLOPT_PROXYTYPE
of curlProxyType
475 | CURLOPT_PROTOCOLS
of curlProto list
476 | CURLOPT_REDIR_PROTOCOLS
of curlProto list
477 | CURLOPT_RESOLVE
of string list
478 | CURLOPT_DNS_SERVERS
of string
479 | CURLOPT_MAIL_FROM
of string
480 | CURLOPT_MAIL_RCPT
of string list
481 | CURLOPT_PIPEWAIT
of bool
482 | CURLOPT_CERTINFO
of bool
483 | CURLOPT_USERNAME
of string
484 | CURLOPT_PASSWORD
of string
485 | CURLOPT_LOGIN_OPTIONS
of string
486 | CURLOPT_CONNECT_TO
of string list
487 | CURLOPT_POSTREDIR
of curlPostRedir list
488 | CURLOPT_MIMEPOST
of curlMIMEPart list
489 | CURLOPT_SSHKNOWNHOSTS
of string
490 | CURLOPT_SSHKEYFUNCTION
of (curlKHMatch
-> string -> curlKHStat
)
491 | CURLOPT_BUFFERSIZE
of int
492 | CURLOPT_DOH_URL
of string
493 | CURLOPT_SSL_OPTIONS
of curlSslOption list
494 | CURLOPT_WRITEFUNCTION2
of (string -> write_result
)
495 | CURLOPT_READFUNCTION2
of (int -> read_result
)
496 | CURLOPT_XFERINFOFUNCTION
of (int64
-> int64
-> int64
-> int64
-> bool)
501 | CURLINIT_GLOBALWIN32
502 | CURLINIT_GLOBALNOTHING
505 | CURLINFO_EFFECTIVE_URL
507 | CURLINFO_RESPONSE_CODE
508 | CURLINFO_TOTAL_TIME
509 | CURLINFO_NAMELOOKUP_TIME
510 | CURLINFO_CONNECT_TIME
511 | CURLINFO_PRETRANSFER_TIME
512 | CURLINFO_SIZE_UPLOAD
513 | CURLINFO_SIZE_DOWNLOAD
514 | CURLINFO_SPEED_DOWNLOAD
515 | CURLINFO_SPEED_UPLOAD
516 | CURLINFO_HEADER_SIZE
517 | CURLINFO_REQUEST_SIZE
518 | CURLINFO_SSL_VERIFYRESULT
520 | CURLINFO_CONTENT_LENGTH_DOWNLOAD
521 | CURLINFO_CONTENT_LENGTH_UPLOAD
522 | CURLINFO_STARTTRANSFER_TIME
523 | CURLINFO_CONTENT_TYPE
524 | CURLINFO_REDIRECT_TIME
525 | CURLINFO_REDIRECT_COUNT
527 | CURLINFO_HTTP_CONNECTCODE
528 | CURLINFO_HTTPAUTH_AVAIL
529 | CURLINFO_PROXYAUTH_AVAIL
531 | CURLINFO_NUM_CONNECTS
532 | CURLINFO_SSL_ENGINES
533 | CURLINFO_COOKIELIST
534 | CURLINFO_LASTSOCKET
535 | CURLINFO_FTP_ENTRY_PATH
536 | CURLINFO_REDIRECT_URL
537 | CURLINFO_PRIMARY_IP
539 | CURLINFO_LOCAL_PORT
540 | CURLINFO_CONDITION_UNMET
542 | CURLINFO_ACTIVESOCKET
544 type curlInfoResult
=
545 | CURLINFO_String
of string
546 | CURLINFO_Long
of int
547 | CURLINFO_Double
of float
548 | CURLINFO_StringList
of string list
549 | CURLINFO_StringListList
of string list list
550 | CURLINFO_Socket
of Unix.file_descr
552 type curlSslBackend
=
553 | CURLSSLBACKEND_NONE
554 | CURLSSLBACKEND_OPENSSL
555 | CURLSSLBACKEND_GNUTLS
557 | CURLSSLBACKEND_GSKIT
558 | CURLSSLBACKEND_WOLFSSL
559 | CURLSSLBACKEND_SCHANNEL
560 | CURLSSLBACKEND_SECURETRANSPORT
561 | CURLSSLBACKEND_MBEDTLS
562 | CURLSSLBACKEND_MESALINK
563 | CURLSSLBACKEND_BEARSSL
567 | CURLSSLSET_UNKNOWN_BACKEND
568 | CURLSSLSET_TOO_LATE
569 | CURLSSLSET_NO_BACKENDS
571 exception NotImplemented
of string
573 let () = Callback.register_exception
"Curl.NotImplemented" (NotImplemented
"")
575 exception CurlSslSetException
of curlSslSet
578 Callback.register_exception
"CurlSslSetException"
579 (CurlSslSetException CURLSSLSET_OK
)
581 external global_sslset
: curlSslBackend
-> unit = "caml_curl_global_sslset"
582 external global_sslset_str
: string -> unit = "caml_curl_global_sslset_str"
583 external global_sslsetavail
: unit -> curlSslBackend list
= "caml_curl_global_sslsetavail"
584 external global_sslsetavail_str
: unit -> string list
= "caml_curl_global_sslsetavail_str"
585 external global_init
: initOption
-> unit = "caml_curl_global_init"
586 external global_cleanup
: unit -> unit = "caml_curl_global_cleanup"
587 external init
: unit -> t
= "caml_curl_easy_init"
588 external reset
: t
-> unit = "caml_curl_easy_reset"
589 external setopt
: t
-> curlOption
-> unit = "caml_curl_easy_setopt"
590 external perform
: t
-> unit = "caml_curl_easy_perform"
591 external cleanup
: t
-> unit = "caml_curl_easy_cleanup"
592 external getinfo
: t
-> curlInfo
-> curlInfoResult
= "caml_curl_easy_getinfo"
593 external escape
: string -> string = "caml_curl_escape"
594 external unescape
: string -> string = "caml_curl_unescape"
595 external getdate
: string -> float -> float = "caml_curl_getdate"
596 external version
: unit -> string = "caml_curl_version"
598 type version_info
= {
600 number
: int * int * int;
602 features
: string list
;
603 ssl_version
: string option;
604 libz_version
: string option;
605 protocols
: string list
;
610 libssh_version
: string;
613 external version_info
: unit -> version_info
= "caml_curl_version_info"
615 external strerror
: curlCode
-> string = "caml_curl_strerror"
616 external curlCode_of_int
: int -> curlCode
option = "caml_curl_curlCode_of_int"
617 external int_of_curlCode
: curlCode
-> int = "caml_curl_int_of_curlCode"
618 let errno = int_of_curlCode
620 type pauseOption
= PAUSE_SEND
| PAUSE_RECV
| PAUSE_ALL
622 external pause
: t
-> pauseOption list
-> unit = "caml_curl_pause"
624 let set_writefunction conn closure
=
625 setopt conn
(CURLOPT_WRITEFUNCTION closure
)
627 let set_writefunction2 conn closure
=
628 setopt conn
(CURLOPT_WRITEFUNCTION2 closure
)
630 let set_readfunction conn closure
=
631 setopt conn
(CURLOPT_READFUNCTION closure
)
633 let set_readfunction2 conn closure
=
634 setopt conn
(CURLOPT_READFUNCTION2 closure
)
636 let set_infilesize conn size
=
637 setopt conn
(CURLOPT_INFILESIZE size
)
639 let set_url conn url
=
640 setopt conn
(CURLOPT_URL url
)
642 let set_proxy conn proxy
=
643 setopt conn
(CURLOPT_PROXY proxy
)
645 let set_proxyport conn proxyport
=
646 setopt conn
(CURLOPT_PROXYPORT proxyport
)
648 let set_httpproxytunnel conn flag
=
649 setopt conn
(CURLOPT_HTTPPROXYTUNNEL flag
)
651 let set_verbose conn flag
=
652 setopt conn
(CURLOPT_VERBOSE flag
)
654 let set_header conn flag
=
655 setopt conn
(CURLOPT_HEADER flag
)
657 let set_noprogress conn flag
=
658 setopt conn
(CURLOPT_NOPROGRESS flag
)
660 let set_nosignal conn flag
=
661 setopt conn
(CURLOPT_NOSIGNAL flag
)
663 let set_nobody conn flag
=
664 setopt conn
(CURLOPT_NOBODY flag
)
666 let set_failonerror conn flag
=
667 setopt conn
(CURLOPT_FAILONERROR flag
)
669 let set_upload conn flag
=
670 setopt conn
(CURLOPT_UPLOAD flag
)
672 let set_post conn flag
=
673 setopt conn
(CURLOPT_POST flag
)
675 let set_ftplistonly conn flag
=
676 setopt conn
(CURLOPT_FTPLISTONLY flag
)
678 let set_ftpappend conn flag
=
679 setopt conn
(CURLOPT_FTPAPPEND flag
)
681 let set_netrc conn netrc
=
682 setopt conn
(CURLOPT_NETRC netrc
)
684 let set_encoding conn encoding
=
685 setopt conn
(CURLOPT_ENCODING encoding
)
687 let set_followlocation conn flag
=
688 setopt conn
(CURLOPT_FOLLOWLOCATION flag
)
690 let set_transfertext conn flag
=
691 setopt conn
(CURLOPT_TRANSFERTEXT flag
)
693 let set_put conn flag
=
694 setopt conn
(CURLOPT_PUT flag
)
696 let set_userpwd conn userpwd
=
697 setopt conn
(CURLOPT_USERPWD userpwd
)
699 let set_proxyuserpwd conn proxyuserpwd
=
700 setopt conn
(CURLOPT_PROXYUSERPWD proxyuserpwd
)
702 let set_range conn range
=
703 setopt conn
(CURLOPT_RANGE range
)
705 let set_errorbuffer conn errorbuffer
=
706 setopt conn
(CURLOPT_ERRORBUFFER errorbuffer
)
708 let set_timeout conn timeout
=
709 setopt conn
(CURLOPT_TIMEOUT timeout
)
711 let set_postfields conn postfields
=
712 setopt conn
(CURLOPT_POSTFIELDS postfields
)
714 let set_postfieldsize conn postfieldsize
=
715 setopt conn
(CURLOPT_POSTFIELDSIZE postfieldsize
)
717 let set_referer conn referer
=
718 setopt conn
(CURLOPT_REFERER referer
)
720 let set_useragent conn useragent
=
721 setopt conn
(CURLOPT_USERAGENT useragent
)
723 let set_ftpport conn ftpport
=
724 setopt conn
(CURLOPT_FTPPORT ftpport
)
726 let set_lowspeedlimit conn lowspeedlimit
=
727 setopt conn
(CURLOPT_LOWSPEEDLIMIT lowspeedlimit
)
729 let set_lowspeedtime conn lowspeedtime
=
730 setopt conn
(CURLOPT_LOWSPEEDTIME lowspeedtime
)
732 let set_resumefrom conn resumefrom
=
733 setopt conn
(CURLOPT_RESUMEFROM resumefrom
)
735 let set_cookie conn cookie
=
736 setopt conn
(CURLOPT_COOKIE cookie
)
738 let set_httpheader conn httpheader
=
739 setopt conn
(CURLOPT_HTTPHEADER httpheader
)
741 let set_httppost conn httppost
=
742 setopt conn
(CURLOPT_HTTPPOST httppost
)
744 let set_sslcert conn sslcert
=
745 setopt conn
(CURLOPT_SSLCERT sslcert
)
747 let set_sslcerttype conn sslcerttype
=
748 setopt conn
(CURLOPT_SSLCERTTYPE sslcerttype
)
750 let set_sslcertpasswd conn sslcertpasswd
=
751 setopt conn
(CURLOPT_SSLCERTPASSWD sslcertpasswd
)
753 let set_sslkey conn sslkey
=
754 setopt conn
(CURLOPT_SSLKEY sslkey
)
756 let set_sslkeytype conn sslkeytype
=
757 setopt conn
(CURLOPT_SSLKEYTYPE sslkeytype
)
759 let set_sslkeypasswd conn sslkeypasswd
=
760 setopt conn
(CURLOPT_SSLKEYPASSWD sslkeypasswd
)
762 let set_sslengine conn sslengine
=
763 setopt conn
(CURLOPT_SSLENGINE sslengine
)
765 let set_sslenginedefault conn flag
=
766 setopt conn
(CURLOPT_SSLENGINEDEFAULT flag
)
768 let set_certinfo conn flag
=
769 setopt conn
(CURLOPT_CERTINFO flag
)
771 let set_crlf conn flag
=
772 setopt conn
(CURLOPT_CRLF flag
)
774 let set_quote conn quote
=
775 setopt conn
(CURLOPT_QUOTE quote
)
777 let set_postquote conn postquote
=
778 setopt conn
(CURLOPT_POSTQUOTE postquote
)
780 let set_headerfunction conn closure
=
781 setopt conn
(CURLOPT_HEADERFUNCTION closure
)
783 let set_cookiefile conn cookiefile
=
784 setopt conn
(CURLOPT_COOKIEFILE cookiefile
)
786 let set_sslversion conn sslversion
=
787 setopt conn
(CURLOPT_SSLVERSION sslversion
)
789 let set_timecondition conn timecondition
=
790 setopt conn
(CURLOPT_TIMECONDITION timecondition
)
792 let set_timevalue conn timevalue
=
793 setopt conn
(CURLOPT_TIMEVALUE timevalue
)
795 let set_customrequest conn customrequest
=
796 setopt conn
(CURLOPT_CUSTOMREQUEST customrequest
)
798 let set_interface conn interface
=
799 setopt conn
(CURLOPT_INTERFACE interface
)
801 let set_krb4level conn krb4level
=
802 setopt conn
(CURLOPT_KRB4LEVEL krb4level
)
804 let set_progressfunction conn closure
=
805 setopt conn
(CURLOPT_PROGRESSFUNCTION closure
)
807 let set_xferinfofunction conn closure
=
808 setopt conn
(CURLOPT_XFERINFOFUNCTION closure
)
810 let set_sslverifypeer conn flag
=
811 setopt conn
(CURLOPT_SSLVERIFYPEER flag
)
813 let set_cainfo conn cainfo
=
814 setopt conn
(CURLOPT_CAINFO cainfo
)
816 let set_capath conn capath
=
817 setopt conn
(CURLOPT_CAPATH capath
)
819 let set_filetime conn filetime
=
820 setopt conn
(CURLOPT_FILETIME filetime
)
822 let set_maxredirs conn maxredirs
=
823 setopt conn
(CURLOPT_MAXREDIRS maxredirs
)
825 let set_maxconnects conn maxconnects
=
826 setopt conn
(CURLOPT_MAXCONNECTS maxconnects
)
828 let set_closepolicy conn closepolicy
=
829 setopt conn
(CURLOPT_CLOSEPOLICY closepolicy
)
831 let set_freshconnect conn flag
=
832 setopt conn
(CURLOPT_FRESHCONNECT flag
)
834 let set_forbidreuse conn flag
=
835 setopt conn
(CURLOPT_FORBIDREUSE flag
)
837 let set_randomfile conn randomfile
=
838 setopt conn
(CURLOPT_RANDOMFILE randomfile
)
840 let set_egdsocket conn egdsocket
=
841 setopt conn
(CURLOPT_EGDSOCKET egdsocket
)
843 let set_connecttimeout conn connecttimeout
=
844 setopt conn
(CURLOPT_CONNECTTIMEOUT connecttimeout
)
846 let set_httpget conn flag
=
847 setopt conn
(CURLOPT_HTTPGET flag
)
849 let set_sslverifyhost conn sslverifyhost
=
850 setopt conn
(CURLOPT_SSLVERIFYHOST sslverifyhost
)
852 let set_cookiejar conn cookiejar
=
853 setopt conn
(CURLOPT_COOKIEJAR cookiejar
)
855 let set_sslcipherlist conn sslcipherlist
=
856 setopt conn
(CURLOPT_SSLCIPHERLIST sslcipherlist
)
858 let set_httpversion conn httpversion
=
859 setopt conn
(CURLOPT_HTTPVERSION httpversion
)
861 let set_ftpuseepsv conn flag
=
862 setopt conn
(CURLOPT_FTPUSEEPSV flag
)
864 let set_dnscachetimeout conn dnscachetimeout
=
865 setopt conn
(CURLOPT_DNSCACHETIMEOUT dnscachetimeout
)
867 let set_dnsuseglobalcache conn flag
=
868 setopt conn
(CURLOPT_DNSUSEGLOBALCACHE flag
)
870 let set_debugfunction conn closure
=
871 setopt conn
(CURLOPT_DEBUGFUNCTION closure
)
873 let set_private conn privateData
=
874 setopt conn
(CURLOPT_PRIVATE privateData
)
876 let set_http200aliases conn aliases
=
877 setopt conn
(CURLOPT_HTTP200ALIASES aliases
)
879 let set_unrestrictedauth conn flag
=
880 setopt conn
(CURLOPT_UNRESTRICTEDAUTH flag
)
882 let set_ftpuseeprt conn flag
=
883 setopt conn
(CURLOPT_FTPUSEEPRT flag
)
885 let set_httpauth conn auth
=
886 setopt conn
(CURLOPT_HTTPAUTH auth
)
888 let set_ftpcreatemissingdirs conn flag
=
889 setopt conn
(CURLOPT_FTPCREATEMISSINGDIRS flag
)
891 let set_proxyauth conn auth
=
892 setopt conn
(CURLOPT_PROXYAUTH auth
)
894 let set_ftpresponsetimeout conn timeout
=
895 setopt conn
(CURLOPT_FTPRESPONSETIMEOUT timeout
)
897 let set_ipresolve conn ipresolve
=
898 setopt conn
(CURLOPT_IPRESOLVE ipresolve
)
900 let set_maxfilesize conn size
=
901 setopt conn
(CURLOPT_MAXFILESIZE size
)
903 let set_infilesizelarge conn size
=
904 setopt conn
(CURLOPT_INFILESIZELARGE size
)
906 let set_resumefromlarge conn size
=
907 setopt conn
(CURLOPT_RESUMEFROMLARGE size
)
909 let set_maxfilesizelarge conn size
=
910 setopt conn
(CURLOPT_MAXFILESIZELARGE size
)
912 let set_netrcfile conn file
=
913 setopt conn
(CURLOPT_NETRCFILE file
)
915 let set_ftpssl conn ftpssl
=
916 setopt conn
(CURLOPT_FTPSSL ftpssl
)
918 let set_postfieldsizelarge conn size
=
919 setopt conn
(CURLOPT_POSTFIELDSIZELARGE size
)
921 let set_tcpnodelay conn flag
=
922 setopt conn
(CURLOPT_TCPNODELAY flag
)
924 let set_tcpfastopen conn flag
=
925 setopt conn
(CURLOPT_TCP_FASTOPEN flag
)
927 let set_ftpsslauth conn auth
=
928 setopt conn
(CURLOPT_FTPSSLAUTH auth
)
930 let set_ioctlfunction conn closure
=
931 setopt conn
(CURLOPT_IOCTLFUNCTION closure
)
933 let set_ftpaccount conn account
=
934 setopt conn
(CURLOPT_FTPACCOUNT account
)
936 let set_cookielist conn cookielist
=
937 setopt conn
(CURLOPT_COOKIELIST cookielist
)
939 let set_ignorecontentlength conn flag
=
940 setopt conn
(CURLOPT_IGNORECONTENTLENGTH flag
)
942 let set_ftpskippasvip conn flag
=
943 setopt conn
(CURLOPT_FTPSKIPPASVIP flag
)
945 let set_ftpfilemethod conn ftpMethod
=
946 setopt conn
(CURLOPT_FTPFILEMETHOD ftpMethod
)
948 let set_localport conn port
=
949 setopt conn
(CURLOPT_LOCALPORT port
)
951 let set_localportrange conn range
=
952 setopt conn
(CURLOPT_LOCALPORTRANGE range
)
954 let set_connectonly conn flag
=
955 setopt conn
(CURLOPT_CONNECTONLY flag
)
957 let set_maxsendspeedlarge conn speed
=
958 setopt conn
(CURLOPT_MAXSENDSPEEDLARGE speed
)
960 let set_maxrecvspeedlarge conn speed
=
961 setopt conn
(CURLOPT_MAXRECVSPEEDLARGE speed
)
963 let set_ftpalternativetouser conn user
=
964 setopt conn
(CURLOPT_FTPALTERNATIVETOUSER user
)
966 let set_sslsessionidcache conn flag
=
967 setopt conn
(CURLOPT_SSLSESSIONIDCACHE flag
)
969 let set_sshauthtypes conn types
=
970 setopt conn
(CURLOPT_SSHAUTHTYPES types
)
972 let set_sshpublickeyfile conn keyfile
=
973 setopt conn
(CURLOPT_SSHPUBLICKEYFILE keyfile
)
975 let set_sshprivatekeyfile conn keyfile
=
976 setopt conn
(CURLOPT_SSHPRIVATEKEYFILE keyfile
)
978 let set_ftpsslccc conn ccc
=
979 setopt conn
(CURLOPT_FTPSSLCCC ccc
)
981 let set_timeoutms conn ms
=
982 setopt conn
(CURLOPT_TIMEOUTMS ms
)
984 let set_connecttimeoutms conn ms
=
985 setopt conn
(CURLOPT_CONNECTTIMEOUTMS ms
)
987 let set_httptransferdecoding conn flag
=
988 setopt conn
(CURLOPT_HTTPTRANSFERDECODING flag
)
990 let set_httpcontentdecoding conn flag
=
991 setopt conn
(CURLOPT_HTTPCONTENTDECODING flag
)
993 let set_newfileperms conn perms
=
994 setopt conn
(CURLOPT_NEWFILEPERMS perms
)
996 let set_newdirectoryperms conn perms
=
997 setopt conn
(CURLOPT_NEWDIRECTORYPERMS perms
)
999 let set_post301 conn flag
=
1000 setopt conn
(CURLOPT_POST301 flag
)
1002 let set_sshhostpublickeymd5 conn key
=
1003 setopt conn
(CURLOPT_SSHHOSTPUBLICKEYMD5 key
)
1005 let set_copypostfields conn post
=
1006 setopt conn
(CURLOPT_COPYPOSTFIELDS post
)
1008 let set_proxytransfermode conn flag
=
1009 setopt conn
(CURLOPT_PROXYTRANSFERMODE flag
)
1011 let set_seekfunction conn closure
=
1012 setopt conn
(CURLOPT_SEEKFUNCTION closure
)
1014 let set_autoreferer conn b
=
1015 setopt conn
(CURLOPT_AUTOREFERER b
)
1017 let set_opensocketfunction conn closure
=
1018 setopt conn
(CURLOPT_OPENSOCKETFUNCTION closure
)
1020 let set_closesocketfunction conn closure
=
1021 setopt conn
(CURLOPT_CLOSESOCKETFUNCTION closure
)
1023 let set_proxytype conn ptype
=
1024 setopt conn
(CURLOPT_PROXYTYPE ptype
)
1026 let set_protocols conn l
=
1027 setopt conn
(CURLOPT_PROTOCOLS l
)
1029 let set_redirprotocols conn l
=
1030 setopt conn
(CURLOPT_REDIR_PROTOCOLS l
)
1032 let set_resolve conn l_add l_del
=
1033 let acc = List.fold_left
(fun acc (host
,port
,address
) -> (host ^
":" ^ string_of_int port ^
":" ^ address
) :: acc) [] l_add
in
1034 let acc = List.fold_left
(fun acc (host
,port
) -> ("-" ^ host ^
":" ^ string_of_int port
) :: acc) acc l_del
in
1035 setopt conn
(CURLOPT_RESOLVE
acc)
1037 let set_dns_servers conn l
=
1038 setopt conn
(CURLOPT_DNS_SERVERS
(String.concat
"," l
))
1040 let set_mailfrom conn l
=
1041 setopt conn
(CURLOPT_MAIL_FROM l
)
1043 let set_mailrcpt conn l
=
1044 setopt conn
(CURLOPT_MAIL_RCPT l
)
1046 let set_pipewait conn b
=
1047 setopt conn
(CURLOPT_PIPEWAIT b
)
1049 let set_username conn s
=
1050 setopt conn
(CURLOPT_USERNAME s
)
1052 let set_password conn s
=
1053 setopt conn
(CURLOPT_PASSWORD s
)
1055 let set_login_options conn s
=
1056 setopt conn
(CURLOPT_LOGIN_OPTIONS s
)
1058 let set_connect_to conn l
=
1059 setopt conn
(CURLOPT_CONNECT_TO l
)
1061 let set_postredir conn l
=
1062 setopt conn
(CURLOPT_POSTREDIR l
)
1064 let set_mimepost conn part
=
1065 setopt conn
(CURLOPT_MIMEPOST part
)
1067 let set_sshknownhosts conn s
=
1068 setopt conn
(CURLOPT_SSHKNOWNHOSTS s
)
1070 let set_sshkeyfunction conn f
=
1071 setopt conn
(CURLOPT_SSHKEYFUNCTION f
)
1073 let set_buffersize conn buffersize
=
1074 setopt conn
(CURLOPT_BUFFERSIZE buffersize
)
1076 let set_doh_url conn url
=
1077 setopt conn
(CURLOPT_DOH_URL url
)
1079 let set_ssl_options conn opts
=
1080 setopt conn
(CURLOPT_SSL_OPTIONS opts
)
1082 let get_effectiveurl conn
=
1083 match (getinfo conn CURLINFO_EFFECTIVE_URL
) with
1084 | CURLINFO_String s
-> s
1087 let get_redirecturl conn
=
1088 match (getinfo conn CURLINFO_REDIRECT_URL
) with
1089 | CURLINFO_String s
-> s
1092 let get_responsecode conn
=
1093 match (getinfo conn CURLINFO_HTTP_CODE
) with
1094 | CURLINFO_Long l
-> l
1097 let get_httpcode conn
=
1098 get_responsecode conn
1100 let get_totaltime conn
=
1101 match (getinfo conn CURLINFO_TOTAL_TIME
) with
1102 | CURLINFO_Double d
-> d
1105 let get_namelookuptime conn
=
1106 match (getinfo conn CURLINFO_NAMELOOKUP_TIME
) with
1107 | CURLINFO_Double d
-> d
1110 let get_connecttime conn
=
1111 match (getinfo conn CURLINFO_CONNECT_TIME
) with
1112 | CURLINFO_Double d
-> d
1115 let get_pretransfertime conn
=
1116 match (getinfo conn CURLINFO_PRETRANSFER_TIME
) with
1117 | CURLINFO_Double d
-> d
1120 let get_sizeupload conn
=
1121 match (getinfo conn CURLINFO_SIZE_UPLOAD
) with
1122 | CURLINFO_Double d
-> d
1125 let get_sizedownload conn
=
1126 match (getinfo conn CURLINFO_SIZE_DOWNLOAD
) with
1127 | CURLINFO_Double d
-> d
1130 let get_speeddownload conn
=
1131 match (getinfo conn CURLINFO_SPEED_DOWNLOAD
) with
1132 | CURLINFO_Double d
-> d
1135 let get_speedupload conn
=
1136 match (getinfo conn CURLINFO_SPEED_UPLOAD
) with
1137 | CURLINFO_Double d
-> d
1140 let get_headersize conn
=
1141 match (getinfo conn CURLINFO_HEADER_SIZE
) with
1142 | CURLINFO_Long l
-> l
1145 let get_requestsize conn
=
1146 match (getinfo conn CURLINFO_REQUEST_SIZE
) with
1147 | CURLINFO_Long l
-> l
1150 let get_sslverifyresult conn
=
1151 match (getinfo conn CURLINFO_SSL_VERIFYRESULT
) with
1152 | CURLINFO_Long l
-> l
1155 let get_filetime conn
=
1156 match (getinfo conn CURLINFO_FILETIME
) with
1157 | CURLINFO_Double d
-> d
1160 let get_contentlengthdownload conn
=
1161 match (getinfo conn CURLINFO_CONTENT_LENGTH_DOWNLOAD
) with
1162 | CURLINFO_Double d
-> d
1165 let get_contentlengthupload conn
=
1166 match (getinfo conn CURLINFO_CONTENT_LENGTH_UPLOAD
) with
1167 | CURLINFO_Double d
-> d
1170 let get_starttransfertime conn
=
1171 match (getinfo conn CURLINFO_STARTTRANSFER_TIME
) with
1172 | CURLINFO_Double d
-> d
1175 let get_contenttype conn
=
1176 match (getinfo conn CURLINFO_CONTENT_TYPE
) with
1177 | CURLINFO_String s
-> s
1180 let get_redirecttime conn
=
1181 match (getinfo conn CURLINFO_REDIRECT_TIME
) with
1182 | CURLINFO_Double d
-> d
1185 let get_redirectcount conn
=
1186 match (getinfo conn CURLINFO_REDIRECT_COUNT
) with
1187 | CURLINFO_Long l
-> l
1190 let get_private conn
=
1191 match (getinfo conn CURLINFO_PRIVATE
) with
1192 | CURLINFO_String s
-> s
1195 let get_httpconnectcode conn
=
1196 match (getinfo conn CURLINFO_HTTP_CONNECTCODE
) with
1197 | CURLINFO_Long l
-> l
1200 let get_certinfo conn
=
1201 match (getinfo conn CURLINFO_CERTINFO
) with
1202 | CURLINFO_StringListList l
-> l
1205 let generate_auth auth
=
1206 let result = ref [] in
1207 if auth
land 1 != 0 then result := [CURLAUTH_BASIC
];
1208 if auth
land 2 != 0 then result := CURLAUTH_DIGEST
:: !result;
1209 if auth
land 4 != 0 then result := CURLAUTH_GSSNEGOTIATE
:: !result;
1210 if auth
land 8 != 0 then result := CURLAUTH_NTLM
:: !result;
1213 let get_httpauthavail conn
=
1214 match (getinfo conn CURLINFO_HTTPAUTH_AVAIL
) with
1215 | CURLINFO_Long l
-> generate_auth l
1218 let get_proxyauthavail conn
=
1219 match (getinfo conn CURLINFO_PROXYAUTH_AVAIL
) with
1220 | CURLINFO_Long l
-> generate_auth l
1223 let get_oserrno conn
=
1224 match (getinfo conn CURLINFO_OS_ERRNO
) with
1225 | CURLINFO_Long l
-> l
1228 let get_numconnects conn
=
1229 match (getinfo conn CURLINFO_NUM_CONNECTS
) with
1230 | CURLINFO_Long l
-> l
1233 let get_sslengines conn
=
1234 match (getinfo conn CURLINFO_SSL_ENGINES
) with
1235 | CURLINFO_StringList l
-> l
1238 let get_cookielist conn
=
1239 match (getinfo conn CURLINFO_COOKIELIST
) with
1240 | CURLINFO_StringList l
-> l
1243 let get_lastsocket conn
=
1244 match (getinfo conn CURLINFO_LASTSOCKET
) with
1245 | CURLINFO_Long l
-> l
1248 let get_activesocket conn
=
1249 match (getinfo conn CURLINFO_ACTIVESOCKET
) with
1250 | CURLINFO_Socket s
-> Some s
1253 let get_ftpentrypath conn
=
1254 match (getinfo conn CURLINFO_FTP_ENTRY_PATH
) with
1255 | CURLINFO_String s
-> s
1258 let get_primaryip conn
=
1259 match (getinfo conn CURLINFO_PRIMARY_IP
) with
1260 | CURLINFO_String s
-> s
1263 let get_localip conn
=
1264 match (getinfo conn CURLINFO_LOCAL_IP
) with
1265 | CURLINFO_String s
-> s
1268 let get_localport conn
=
1269 match (getinfo conn CURLINFO_LOCAL_PORT
) with
1270 | CURLINFO_Long n
-> n
1273 let get_conditionunmet conn
=
1274 match (getinfo conn CURLINFO_CONDITION_UNMET
) with
1275 | CURLINFO_Long n
-> n
<> 0
1279 Callback.register_exception
"CurlException"
1280 (CurlException
(CURLE_OK
, 0, ""))
1285 method handle
= conn
1286 method perform
= perform conn
1287 method cleanup
= cleanup conn
1288 method set_writefunction closure
= set_writefunction conn closure
1289 method set_writefunction2 closure
= set_writefunction2 conn closure
1290 method set_readfunction closure
= set_readfunction conn closure
1291 method set_readfunction2 closure
= set_readfunction2 conn closure
1292 method set_infilesize size
= set_infilesize conn size
1293 method set_url url
= set_url conn url
1294 method set_proxy proxy
= set_proxy conn proxy
1295 method set_proxyport proxyport
= set_proxyport conn proxyport
1296 method set_httpproxytunnel flag
= set_httpproxytunnel conn flag
1297 method set_verbose flag
= set_verbose conn flag
1298 method set_header flag
= set_header conn flag
1299 method set_noprogress flag
= set_noprogress conn flag
1300 method set_nosignal flag
= set_nosignal conn flag
1301 method set_nobody flag
= set_nobody conn flag
1302 method set_failonerror flag
= set_failonerror conn flag
1303 method set_upload flag
= set_upload conn flag
1304 method set_post flag
= set_post conn flag
1305 method set_ftplistonly flag
= set_ftplistonly conn flag
1306 method set_ftpappend flag
= set_ftpappend conn flag
1307 method set_netrc netrc
= set_netrc conn netrc
1308 method set_encoding encoding
= set_encoding conn encoding
1309 method set_followlocation flag
= set_followlocation conn flag
1310 method set_transfertext flag
= set_transfertext conn flag
1311 method set_put flag
= set_put conn flag
1312 method set_userpwd userpwd
= set_userpwd conn userpwd
1313 method set_proxyuserpwd proxyuserpwd
= set_proxyuserpwd conn proxyuserpwd
1314 method set_range range
= set_range conn range
1315 method set_errorbuffer errorbuffer
= set_errorbuffer conn errorbuffer
1316 method set_timeout timeout
= set_timeout conn timeout
1317 method set_postfields postfields
= set_postfields conn postfields
1318 method set_referer referer
= set_referer conn referer
1319 method set_useragent useragent
= set_useragent conn useragent
1320 method set_ftpport ftpport
= set_ftpport conn ftpport
1321 method set_lowspeedlimit lowspeedlimit
= set_lowspeedlimit conn lowspeedlimit
1322 method set_lowspeedtime lowspeedtime
= set_lowspeedtime conn lowspeedtime
1323 method set_resumefrom resumefrom
= set_resumefrom conn resumefrom
1324 method set_cookie cookie
= set_cookie conn cookie
1325 method set_httpheader httpheader
= set_httpheader conn httpheader
1326 method set_httppost httppost
= set_httppost conn httppost
1327 method set_sslcert sslcert
= set_sslcert conn sslcert
1328 method set_sslcerttype sslcerttype
= set_sslcerttype conn sslcerttype
1329 method set_sslcertpasswd sslcertpasswd
= set_sslcertpasswd conn sslcertpasswd
1330 method set_sslkey sslkey
= set_sslkey conn sslkey
1331 method set_sslkeytype sslkeytype
= set_sslkeytype conn sslkeytype
1332 method set_sslkeypasswd sslkeypasswd
= set_sslkeypasswd conn sslkeypasswd
1333 method set_sslengine sslengine
= set_sslengine conn sslengine
1334 method set_sslenginedefault flag
= set_sslenginedefault conn flag
1335 method set_certinfo flag
= set_certinfo conn flag
1336 method set_crlf flag
= set_crlf conn flag
1337 method set_quote quote
= set_quote conn quote
1338 method set_postquote postquote
= set_postquote conn postquote
1339 method set_headerfunction closure
= set_headerfunction conn closure
1340 method set_cookiefile cookiefile
= set_cookiefile conn cookiefile
1341 method set_sslversion sslversion
= set_sslversion conn sslversion
1342 method set_timecondition timecondition
= set_timecondition conn timecondition
1343 method set_timevalue timevalue
= set_timevalue conn timevalue
1344 method set_customrequest customrequest
= set_customrequest conn customrequest
1345 method set_interface interface
= set_interface conn interface
1346 method set_krb4level krb4level
= set_krb4level conn krb4level
1347 method set_progressfunction closure
= set_progressfunction conn closure
1348 method set_xferinfofunction closure
= set_xferinfofunction conn closure
1349 method set_sslverifypeer flag
= set_sslverifypeer conn flag
1350 method set_cainfo cainfo
= set_cainfo conn cainfo
1351 method set_capath capath
= set_capath conn capath
1352 method set_filetime filetime
= set_filetime conn filetime
1353 method set_maxredirs maxredirs
= set_maxredirs conn maxredirs
1354 method set_maxconnects maxconnects
= set_maxconnects conn maxconnects
1355 method set_closepolicy closepolicy
= set_closepolicy conn closepolicy
1356 method set_freshconnect flag
= set_freshconnect conn flag
1357 method set_forbidreuse flag
= set_forbidreuse conn flag
1358 method set_randomfile randomfile
= set_randomfile conn randomfile
1359 method set_egdsocket egdsocket
= set_egdsocket conn egdsocket
1360 method set_connecttimeout connecttimeout
=
1361 set_connecttimeout conn connecttimeout
1362 method set_httpget flag
= set_httpget conn flag
1363 method set_sslverifyhost sslverifyhost
= set_sslverifyhost conn sslverifyhost
1364 method set_cookiejar cookiejar
= set_cookiejar conn cookiejar
1365 method set_sslcipherlist sslcipherlist
= set_sslcipherlist conn sslcipherlist
1366 method set_httpversion httpversion
= set_httpversion conn httpversion
1367 method set_ftpuseepsv flag
= set_ftpuseepsv conn flag
1368 method set_dnscachetimeout dnscachetimeout
= set_dnscachetimeout conn dnscachetimeout
1369 method set_dnsuseglobalcache flag
= set_dnsuseglobalcache conn flag
1370 method set_debugfunction closure
= set_debugfunction conn closure
1371 method set_private privateData
= set_private conn privateData
1372 method set_http200aliases aliases
= set_http200aliases conn aliases
1373 method set_unrestrictedauth flag
= set_unrestrictedauth conn flag
1374 method set_ftpuseeprt flag
= set_ftpuseeprt conn flag
1375 method set_httpauth auth
= set_httpauth conn auth
1376 method set_ftpcreatemissingdirs flag
= set_ftpcreatemissingdirs conn flag
1377 method set_proxyauth auth
= set_proxyauth conn auth
1378 method set_ftpresponsetimeout timeout
= set_ftpresponsetimeout conn timeout
1379 method set_ipresolve ipresolve
= set_ipresolve conn ipresolve
1380 method set_maxfilesize size
= set_maxfilesize conn size
1381 method set_infilesizelarge size
= set_infilesizelarge conn size
1382 method set_resumefromlarge size
= set_resumefromlarge conn size
1383 method set_maxfilesizelarge size
= set_maxfilesizelarge conn size
1384 method set_netrcfile file
= set_netrcfile conn file
1385 method set_ftpssl ftpssl
= set_ftpssl conn ftpssl
1386 method set_postfieldsize size
= set_postfieldsize conn size
1387 method set_postfieldsizelarge size
= set_postfieldsizelarge conn size
1388 method set_tcpnodelay flag
= set_tcpnodelay conn flag
1389 method set_tcpfastopen flag
= set_tcpfastopen conn flag
1390 method set_ftpsslauth flag
= set_ftpsslauth conn flag
1391 method set_ioctlfunction closure
= set_ioctlfunction conn closure
1392 method set_ftpaccount account
= set_ftpaccount conn account
1393 method set_cookielist cookielist
= set_cookielist conn cookielist
1394 method set_ignorecontentlength flag
= set_ignorecontentlength conn flag
1395 method set_ftpskippasvip flag
= set_ftpskippasvip conn flag
1396 method set_ftpfilemethod ftpMethod
= set_ftpfilemethod conn ftpMethod
1397 method set_localport port
= set_localport conn port
1398 method set_localportrange range
= set_localportrange conn range
1399 method set_connectonly flag
= set_connectonly conn flag
1400 method set_maxsendspeedlarge speed
= set_maxsendspeedlarge conn speed
1401 method set_maxrecvspeedlarge speed
= set_maxrecvspeedlarge conn speed
1402 method set_ftpalternativetouser user
= set_ftpalternativetouser conn user
1403 method set_sslsessionidcache flag
= set_sslsessionidcache conn flag
1404 method set_sshauthtypes types
= set_sshauthtypes conn types
1405 method set_sshpublickeyfile keyfile
= set_sshpublickeyfile conn keyfile
1406 method set_sshprivatekeyfile keyfile
= set_sshprivatekeyfile conn keyfile
1407 method set_ftpsslccc ccc
= set_ftpsslccc conn ccc
1408 method set_timeoutms ms
= set_timeoutms conn ms
1409 method set_connecttimeoutms ms
= set_connecttimeoutms conn ms
1410 method set_httptransferdecoding flag
= set_httptransferdecoding conn flag
1411 method set_httpcontentdecoding flag
= set_httpcontentdecoding conn flag
1412 method set_newfileperms perms
= set_newfileperms conn perms
1413 method set_newdirectoryperms perms
= set_newdirectoryperms conn perms
1414 method set_post301 flag
= set_post301 conn flag
1415 method set_sshhostpublickeymd5 key
= set_sshhostpublickeymd5 conn key
1416 method set_copypostfields post
= set_copypostfields conn post
1417 method set_proxytransfermode flag
= set_proxytransfermode conn flag
1418 method set_seekfunction closure
= set_seekfunction conn closure
1419 method set_resolve l
= set_resolve conn l
1420 method set_dns_servers l
= set_dns_servers conn l
1421 method set_autoreferer b
= set_autoreferer conn b
1422 method set_opensocketfunction closure
= set_opensocketfunction conn closure
1423 method set_closesocketfunction closure
= set_closesocketfunction conn closure
1424 method set_proxytype t
= set_proxytype conn t
1425 method set_mimepost p
= set_mimepost conn p
1426 method set_sshknownhosts s
= set_sshknownhosts conn s
1427 method set_sshkeyfunction f
= set_sshkeyfunction conn f
1428 method set_buffersize buffersize
= set_buffersize conn buffersize
1429 method set_doh_url url
= set_doh_url conn url
1430 method set_ssl_options opts
= set_ssl_options conn opts
1432 method get_effectiveurl = get_effectiveurl conn
1433 method get_redirecturl = get_redirecturl conn
1434 method get_responsecode = get_responsecode conn
1435 method get_httpcode = get_responsecode conn
1436 method get_totaltime = get_totaltime conn
1437 method get_namelookuptime = get_namelookuptime conn
1438 method get_connecttime = get_connecttime conn
1439 method get_pretransfertime = get_pretransfertime conn
1440 method get_sizeupload = get_sizeupload conn
1441 method get_sizedownload = get_sizedownload conn
1442 method get_speeddownload = get_speeddownload conn
1443 method get_speedupload = get_speedupload conn
1444 method get_headersize = get_headersize conn
1445 method get_requestsize = get_requestsize conn
1446 method get_sslverifyresult = get_sslverifyresult conn
1447 method get_filetime = get_filetime conn
1448 method get_contentlengthdownload = get_contentlengthdownload conn
1449 method get_contentlengthupload = get_contentlengthupload conn
1450 method get_starttransfertime = get_starttransfertime conn
1451 method get_contenttype = get_contenttype conn
1452 method get_redirecttime = get_redirecttime conn
1453 method get_redirectcount = get_redirectcount conn
1454 method get_private = get_private conn
1455 method get_httpconnectcode = get_httpconnectcode conn
1456 method get_httpauthavail = get_httpauthavail conn
1457 method get_proxyauthavail = get_proxyauthavail conn
1458 method get_oserrno = get_oserrno conn
1459 method get_numconnects = get_numconnects conn
1460 method get_sslengines = get_sslengines conn
1461 method get_cookielist = get_cookielist conn
1462 method get_lastsocket = get_lastsocket conn
1463 method get_activesocket = get_activesocket conn
1464 method get_ftpentrypath = get_ftpentrypath conn
1465 method get_primaryip = get_primaryip conn
1466 method get_localip = get_localip conn
1467 method get_localport = get_localport conn
1468 method get_conditionunmet = get_conditionunmet conn
1469 method get_certinfo = get_certinfo conn
1472 module Multi
= struct
1476 type curlPipelining
= PIPE_NOTHING
| PIPE_HTTP1
| PIPE_MULTIPLEX
1478 type curlMultiOption
=
1479 | CURLMOPT_PIPELINING
of curlPipelining list
1480 | CURLMOPT_MAXCONNECTS
of int
1481 | CURLMOPT_MAX_PIPELINE_LENGTH
of int
1482 | CURLMOPT_MAX_HOST_CONNECTIONS
of int
1483 | CURLMOPT_MAX_TOTAL_CONNECTIONS
of int
1485 exception Error
of string
1489 exception CError
of string * cerror
* string
1491 let () = Callback.register_exception
"Curl.Multi.Error" (Error
"")
1492 let () = Callback.register_exception
"Curl.Multi.CError" (CError
("",0,""))
1494 external create
: unit -> mt
= "caml_curl_multi_init"
1495 external add
: mt
-> t
-> unit = "caml_curl_multi_add_handle"
1496 external perform
: mt
-> int = "caml_curl_multi_perform_all"
1497 external wait
: int -> mt
-> bool = "caml_curl_multi_wait"
1498 let wait ?
(timeout_ms
=1000) mt
= wait timeout_ms mt
1499 external poll
: int -> mt
-> bool = "caml_curl_multi_poll"
1500 let poll ?
(timeout_ms
=1000) mt
= poll timeout_ms mt
1501 external remove
: mt
-> t
-> unit = "caml_curl_multi_remove_handle"
1502 external remove_finished
: mt
-> (t
* curlCode
) option = "caml_curlm_remove_finished"
1503 external cleanup
: mt
-> unit = "caml_curl_multi_cleanup"
1505 (* see curlm_sock_cb *)
1506 type poll = POLL_NONE
| POLL_IN
| POLL_OUT
| POLL_INOUT
| POLL_REMOVE
1508 (* see caml_curl_multi_socket_action *)
1509 type fd_status
= EV_AUTO
| EV_IN
| EV_OUT
| EV_INOUT
1511 external set_socket_function
: mt
-> (Unix.file_descr
-> poll -> unit) -> unit = "caml_curl_multi_socketfunction"
1512 external set_timer_function
: mt
-> (int -> unit) -> unit = "caml_curl_multi_timerfunction"
1513 external action_all
: mt
-> int = "caml_curl_multi_socket_all"
1514 external socket_action
: mt
-> Unix.file_descr
option -> fd_status
-> int = "caml_curl_multi_socket_action"
1516 let action_timeout mt
= ignore
(socket_action mt None EV_AUTO
)
1517 let action mt fd status
= socket_action mt
(Some fd
) status
1519 external timeout
: mt
-> int = "caml_curl_multi_timeout"
1521 external setopt
: mt
-> curlMultiOption
-> unit = "caml_curl_multi_setopt"