diff options
Diffstat (limited to 'lib/wrappers/libcurl.nim')
-rw-r--r-- | lib/wrappers/libcurl.nim | 642 |
1 files changed, 642 insertions, 0 deletions
diff --git a/lib/wrappers/libcurl.nim b/lib/wrappers/libcurl.nim new file mode 100644 index 000000000..5d54a2640 --- /dev/null +++ b/lib/wrappers/libcurl.nim @@ -0,0 +1,642 @@ +# +# $Id: header,v 1.1 2000/07/13 06:33:45 michael Exp $ +# This file is part of the Free Pascal packages +# Copyright (c) 1999-2000 by the Free Pascal development team +# +# See the file COPYING.FPC, included in this distribution, +# for details about the copyright. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# +# ********************************************************************** +# +# the curl library is governed by its own copyright, see the curl +# website for this. +# + +import times + +when defined(windows): + const libname = "libcurl.dll" +elif defined(macosx): + const libname = "libcurl-7.19.3.dylib" +elif defined(unix): + const libname = "libcurl.so.4" + +type + Pcurl_calloc_callback* = ptr Tcurl_calloc_callback + Pcurl_closepolicy* = ptr Tcurl_closepolicy + Pcurl_forms* = ptr Tcurl_forms + Pcurl_ftpauth* = ptr Tcurl_ftpauth + Pcurl_ftpmethod* = ptr Tcurl_ftpmethod + Pcurl_ftpssl* = ptr Tcurl_ftpssl + PCURL_HTTP_VERSION* = ptr TCURL_HTTP_VERSION + Pcurl_httppost* = ptr Tcurl_httppost + PPcurl_httppost* = ptr Pcurl_httppost + Pcurl_infotype* = ptr Tcurl_infotype + Pcurl_lock_access* = ptr Tcurl_lock_access + Pcurl_lock_data* = ptr Tcurl_lock_data + Pcurl_malloc_callback* = ptr tcurl_malloc_callback + PCURL_NETRC_OPTION* = ptr TCURL_NETRC_OPTION + Pcurl_proxytype* = ptr Tcurl_proxytype + Pcurl_realloc_callback* = ptr tcurl_realloc_callback + Pcurl_slist* = ptr Tcurl_slist + Pcurl_socket* = ptr Tcurl_socket + PCURL_SSL_VERSION* = ptr TCURL_SSL_VERSION + Pcurl_strdup_callback* = ptr Tcurl_strdup_callback + PCURL_TIMECOND* = ptr TCURL_TIMECOND + Pcurl_version_info_data* = ptr Tcurl_version_info_data + PCURLcode* = ptr TCURLcode + PCURLFORMcode* = ptr TCURLFORMcode + PCURLformoption* = ptr TCURLformoption + PCURLINFO* = ptr TCURLINFO + Pcurliocmd* = ptr Tcurliocmd + Pcurlioerr* = ptr Tcurlioerr + PCURLM* = ptr TCURLM + PCURLMcode* = ptr TCURLMcode + PCURLMoption* = ptr TCURLMoption + PCURLMSG* = ptr TCURLMSG + PCURLoption* = ptr TCURLoption + PCURLSH* = ptr TCURLSH + PCURLSHcode* = ptr TCURLSHcode + PCURLSHoption* = ptr TCURLSHoption + PCURLversion* = ptr TCURLversion + Pfd_set* = pointer + PCURL* = ptr TCurl + TCurl* = pointer + Tcurl_httppost* {.final, pure.} = object + next*: Pcurl_httppost + name*: cstring + namelength*: int32 + contents*: cstring + contentslength*: int32 + buffer*: cstring + bufferlength*: int32 + contenttype*: cstring + contentheader*: Pcurl_slist + more*: Pcurl_httppost + flags*: int32 + showfilename*: cstring + + Tcurl_progress_callback* = proc (clientp: pointer, dltotal: float64, + dlnow: float64, ultotal: float64, + ulnow: float64): int32{.cdecl.} + Tcurl_write_callback* = proc (buffer: cstring, size: int, nitems: int, + outstream: pointer): int{.cdecl.} + Tcurl_read_callback* = proc (buffer: cstring, size: int, nitems: int, + instream: pointer): int{.cdecl.} + Tcurl_passwd_callback* = proc (clientp: pointer, prompt: cstring, + buffer: cstring, buflen: int32): int32{.cdecl.} + Tcurlioerr* = enum + CURLIOE_OK, CURLIOE_UNKNOWNCMD, CURLIOE_FAILRESTART, CURLIOE_LAST + Tcurliocmd* = enum + CURLIOCMD_NOP, CURLIOCMD_RESTARTREAD, CURLIOCMD_LAST + Tcurl_ioctl_callback* = proc (handle: PCURL, cmd: int32, + clientp: pointer): Tcurlioerr {.cdecl.} + Tcurl_malloc_callback* = proc (size: int): pointer {.cdecl.} + Tcurl_free_callback* = proc (p: pointer) {.cdecl.} + Tcurl_realloc_callback* = proc (p: pointer, size: int): pointer {.cdecl.} + Tcurl_strdup_callback* = proc (str: cstring): cstring {.cdecl.} + Tcurl_calloc_callback* = proc (nmemb: int, size: int): pointer + Tcurl_infotype* = enum + CURLINFO_TEXT = 0, CURLINFO_HEADER_IN, CURLINFO_HEADER_OUT, + CURLINFO_DATA_IN, CURLINFO_DATA_OUT, CURLINFO_SSL_DATA_IN, + CURLINFO_SSL_DATA_OUT, CURLINFO_END + Tcurl_debug_callback* = proc (handle: PCURL, theType: Tcurl_infotype, + data: cstring, size: int, + userptr: pointer): int32 {.cdecl.} + TCURLcode* = enum + CURLE_OK = 0, CURLE_UNSUPPORTED_PROTOCOL, CURLE_FAILED_INIT, + CURLE_URL_MALFORMAT, CURLE_URL_MALFORMAT_USER, CURLE_COULDNT_RESOLVE_PROXY, + CURLE_COULDNT_RESOLVE_HOST, CURLE_COULDNT_CONNECT, + CURLE_FTP_WEIRD_SERVER_REPLY, CURLE_FTP_ACCESS_DENIED, + CURLE_FTP_USER_PASSWORD_INCORRECT, CURLE_FTP_WEIRD_PASS_REPLY, + CURLE_FTP_WEIRD_USER_REPLY, CURLE_FTP_WEIRD_PASV_REPLY, + CURLE_FTP_WEIRD_227_FORMAT, CURLE_FTP_CANT_GET_HOST, + CURLE_FTP_CANT_RECONNECT, CURLE_FTP_COULDNT_SET_BINARY, CURLE_PARTIAL_FILE, + CURLE_FTP_COULDNT_RETR_FILE, CURLE_FTP_WRITE_ERROR, CURLE_FTP_QUOTE_ERROR, + CURLE_HTTP_RETURNED_ERROR, CURLE_WRITE_ERROR, CURLE_MALFORMAT_USER, + CURLE_FTP_COULDNT_STOR_FILE, CURLE_READ_ERROR, CURLE_OUT_OF_MEMORY, + CURLE_OPERATION_TIMEOUTED, CURLE_FTP_COULDNT_SET_ASCII, + CURLE_FTP_PORT_FAILED, CURLE_FTP_COULDNT_USE_REST, + CURLE_FTP_COULDNT_GET_SIZE, CURLE_HTTP_RANGE_ERROR, CURLE_HTTP_POST_ERROR, + CURLE_SSL_CONNECT_ERROR, CURLE_BAD_DOWNLOAD_RESUME, + CURLE_FILE_COULDNT_READ_FILE, CURLE_LDAP_CANNOT_BIND, + CURLE_LDAP_SEARCH_FAILED, CURLE_LIBRARY_NOT_FOUND, CURLE_FUNCTION_NOT_FOUND, + CURLE_ABORTED_BY_CALLBACK, CURLE_BAD_FUNCTION_ARGUMENT, + CURLE_BAD_CALLING_ORDER, CURLE_INTERFACE_FAILED, CURLE_BAD_PASSWORD_ENTERED, + CURLE_TOO_MANY_REDIRECTS, CURLE_UNKNOWN_TELNET_OPTION, + CURLE_TELNET_OPTION_SYNTAX, CURLE_OBSOLETE, CURLE_SSL_PEER_CERTIFICATE, + CURLE_GOT_NOTHING, CURLE_SSL_ENGINE_NOTFOUND, CURLE_SSL_ENGINE_SETFAILED, + CURLE_SEND_ERROR, CURLE_RECV_ERROR, CURLE_SHARE_IN_USE, + CURLE_SSL_CERTPROBLEM, CURLE_SSL_CIPHER, CURLE_SSL_CACERT, + CURLE_BAD_CONTENT_ENCODING, CURLE_LDAP_INVALID_URL, CURLE_FILESIZE_EXCEEDED, + CURLE_FTP_SSL_FAILED, CURLE_SEND_FAIL_REWIND, CURLE_SSL_ENGINE_INITFAILED, + CURLE_LOGIN_DENIED, CURLE_TFTP_NOTFOUND, CURLE_TFTP_PERM, + CURLE_TFTP_DISKFULL, CURLE_TFTP_ILLEGAL, CURLE_TFTP_UNKNOWNID, + CURLE_TFTP_EXISTS, CURLE_TFTP_NOSUCHUSER, CURLE_CONV_FAILED, + CURLE_CONV_REQD, CURL_LAST + Tcurl_conv_callback* = proc (buffer: cstring, len: int): TCURLcode {.cdecl.} + Tcurl_ssl_ctx_callback* = proc (curl: PCURL, + ssl_ctx, userptr: pointer): TCURLcode {.cdecl.} + Tcurl_proxytype* = enum + CURLPROXY_HTTP = 0, CURLPROXY_SOCKS4 = 4, CURLPROXY_SOCKS5 = 5 + Tcurl_ftpssl* = enum + CURLFTPSSL_NONE, CURLFTPSSL_TRY, CURLFTPSSL_CONTROL, CURLFTPSSL_ALL, + CURLFTPSSL_LAST + Tcurl_ftpauth* = enum + CURLFTPAUTH_DEFAULT, CURLFTPAUTH_SSL, CURLFTPAUTH_TLS, CURLFTPAUTH_LAST + Tcurl_ftpmethod* = enum + CURLFTPMETHOD_DEFAULT, CURLFTPMETHOD_MULTICWD, CURLFTPMETHOD_NOCWD, + CURLFTPMETHOD_SINGLECWD, CURLFTPMETHOD_LAST + TCURLoption* = enum + CURLOPT_PORT = 0 + 3, + CURLOPT_TIMEOUT = 0 + 13, + CURLOPT_INFILESIZE = 0 + 14, + CURLOPT_LOW_SPEED_LIMIT = 0 + 19, + CURLOPT_LOW_SPEED_TIME = 0 + 20, + CURLOPT_RESUME_FROM = 0 + 21, + CURLOPT_CRLF = 0 + 27, + CURLOPT_SSLVERSION = 0 + 32, + CURLOPT_TIMECONDITION = 0 + 33, + CURLOPT_TIMEVALUE = 0 + 34, + CURLOPT_VERBOSE = 0 + 41, + CURLOPT_HEADER = 0 + 42, + CURLOPT_NOPROGRESS = 0 + 43, + CURLOPT_NOBODY = 0 + 44, + CURLOPT_FAILONERROR = 0 + 45, + CURLOPT_UPLOAD = 0 + 46, + CURLOPT_POST = 0 + 47, + CURLOPT_FTPLISTONLY = 0 + 48, + CURLOPT_FTPAPPEND = 0 + 50, + CURLOPT_NETRC = 0 + 51, + CURLOPT_FOLLOWLOCATION = 0 + 52, + CURLOPT_TRANSFERTEXT = 0 + 53, + CURLOPT_PUT = 0 + 54, + CURLOPT_AUTOREFERER = 0 + 58, + CURLOPT_PROXYPORT = 0 + 59, + CURLOPT_POSTFIELDSIZE = 0 + 60, + CURLOPT_HTTPPROXYTUNNEL = 0 + 61, + CURLOPT_SSL_VERIFYPEER = 0 + 64, + CURLOPT_MAXREDIRS = 0 + 68, + CURLOPT_FILETIME = 0 + 69, + CURLOPT_MAXCONNECTS = 0 + 71, + CURLOPT_CLOSEPOLICY = 0 + 72, + CURLOPT_FRESH_CONNECT = 0 + 74, + CURLOPT_FORBID_REUSE = 0 + 75, + CURLOPT_CONNECTTIMEOUT = 0 + 78, + CURLOPT_HTTPGET = 0 + 80, + CURLOPT_SSL_VERIFYHOST = 0 + 81, + CURLOPT_HTTP_VERSION = 0 + 84, + CURLOPT_FTP_USE_EPSV = 0 + 85, + CURLOPT_SSLENGINE_DEFAULT = 0 + 90, + CURLOPT_DNS_USE_GLOBAL_CACHE = 0 + 91, + CURLOPT_DNS_CACHE_TIMEOUT = 0 + 92, + CURLOPT_COOKIESESSION = 0 + 96, + CURLOPT_BUFFERSIZE = 0 + 98, + CURLOPT_NOSIGNAL = 0 + 99, + CURLOPT_PROXYTYPE = 0 + 101, + CURLOPT_UNRESTRICTED_AUTH = 0 + 105, + CURLOPT_FTP_USE_EPRT = 0 + 106, + CURLOPT_HTTPAUTH = 0 + 107, + CURLOPT_FTP_CREATE_MISSING_DIRS = 0 + 110, + CURLOPT_PROXYAUTH = 0 + 111, + CURLOPT_FTP_RESPONSE_TIMEOUT = 0 + 112, + CURLOPT_IPRESOLVE = 0 + 113, + CURLOPT_MAXFILESIZE = 0 + 114, + CURLOPT_FTP_SSL = 0 + 119, + CURLOPT_TCP_NODELAY = 0 + 121, + CURLOPT_FTPSSLAUTH = 0 + 129, + CURLOPT_IGNORE_CONTENT_LENGTH = 0 + 136, + CURLOPT_FTP_SKIP_PASV_IP = 0 + 137, + CURLOPT_FTP_FILEMETHOD = 0 + 138, + CURLOPT_LOCALPORT = 0 + 139, + CURLOPT_LOCALPORTRANGE = 0 + 140, + CURLOPT_CONNECT_ONLY = 0 + 141, + + CURLOPT_FILE = 10000 + 1, + CURLOPT_URL = 10000 + 2, + CURLOPT_PROXY = 10000 + 4, + CURLOPT_USERPWD = 10000 + 5, + CURLOPT_PROXYUSERPWD = 10000 + 6, + CURLOPT_RANGE = 10000 + 7, + CURLOPT_INFILE = 10000 + 9, + CURLOPT_ERRORBUFFER = 10000 + 10, + CURLOPT_POSTFIELDS = 10000 + 15, + CURLOPT_REFERER = 10000 + 16, + CURLOPT_FTPPORT = 10000 + 17, + CURLOPT_USERAGENT = 10000 + 18, + CURLOPT_COOKIE = 10000 + 22, + CURLOPT_HTTPHEADER = 10000 + 23, + CURLOPT_HTTPPOST = 10000 + 24, + CURLOPT_SSLCERT = 10000 + 25, + CURLOPT_SSLCERTPASSWD = 10000 + 26, + CURLOPT_QUOTE = 10000 + 28, + CURLOPT_WRITEHEADER = 10000 + 29, + CURLOPT_COOKIEFILE = 10000 + 31, + CURLOPT_CUSTOMREQUEST = 10000 + 36, + CURLOPT_STDERR = 10000 + 37, + CURLOPT_POSTQUOTE = 10000 + 39, + CURLOPT_WRITEINFO = 10000 + 40, + CURLOPT_PROGRESSDATA = 10000 + 57, + CURLOPT_INTERFACE = 10000 + 62, + CURLOPT_KRB4LEVEL = 10000 + 63, + CURLOPT_CAINFO = 10000 + 65, + CURLOPT_TELNETOPTIONS = 10000 + 70, + CURLOPT_RANDOM_FILE = 10000 + 76, + CURLOPT_EGDSOCKET = 10000 + 77, + CURLOPT_COOKIEJAR = 10000 + 82, + CURLOPT_SSL_CIPHER_LIST = 10000 + 83, + CURLOPT_SSLCERTTYPE = 10000 + 86, + CURLOPT_SSLKEY = 10000 + 87, + CURLOPT_SSLKEYTYPE = 10000 + 88, + CURLOPT_SSLENGINE = 10000 + 89, + CURLOPT_PREQUOTE = 10000 + 93, + CURLOPT_DEBUGDATA = 10000 + 95, + CURLOPT_CAPATH = 10000 + 97, + CURLOPT_SHARE = 10000 + 100, + CURLOPT_ENCODING = 10000 + 102, + CURLOPT_PRIVATE = 10000 + 103, + CURLOPT_HTTP200ALIASES = 10000 + 104, + CURLOPT_SSL_CTX_DATA = 10000 + 109, + CURLOPT_NETRC_FILE = 10000 + 118, + CURLOPT_SOURCE_USERPWD = 10000 + 123, + CURLOPT_SOURCE_PREQUOTE = 10000 + 127, + CURLOPT_SOURCE_POSTQUOTE = 10000 + 128, + CURLOPT_IOCTLDATA = 10000 + 131, + CURLOPT_SOURCE_URL = 10000 + 132, + CURLOPT_SOURCE_QUOTE = 10000 + 133, + CURLOPT_FTP_ACCOUNT = 10000 + 134, + CURLOPT_COOKIELIST = 10000 + 135, + CURLOPT_FTP_ALTERNATIVE_TO_USER = 10000 + 147, + CURLOPT_LASTENTRY = 10000 + 148, + + CURLOPT_WRITEFUNCTION = 20000 + 11, + CURLOPT_READFUNCTION = 20000 + 12, + CURLOPT_PROGRESSFUNCTION = 20000 + 56, + CURLOPT_HEADERFUNCTION = 20000 + 79, + CURLOPT_DEBUGFUNCTION = 20000 + 94, + CURLOPT_SSL_CTX_FUNCTION = 20000 + 108, + CURLOPT_IOCTLFUNCTION = 20000 + 130, + CURLOPT_CONV_FROM_NETWORK_FUNCTION = 20000 + 142, + CURLOPT_CONV_TO_NETWORK_FUNCTION = 20000 + 143, + CURLOPT_CONV_FROM_UTF8_FUNCTION = 20000 + 144, + + CURLOPT_INFILESIZE_LARGE = 30000 + 115, + CURLOPT_RESUME_FROM_LARGE = 30000 + 116, + CURLOPT_MAXFILESIZE_LARGE = 30000 + 117, + CURLOPT_POSTFIELDSIZE_LARGE = 30000 + 120, + CURLOPT_MAX_SEND_SPEED_LARGE = 30000 + 145, + CURLOPT_MAX_RECV_SPEED_LARGE = 30000 + 146 + + + TCURL_HTTP_VERSION* = enum + CURL_HTTP_VERSION_NONE, CURL_HTTP_VERSION_1_0, CURL_HTTP_VERSION_1_1, + CURL_HTTP_VERSION_LAST + + TCURL_NETRC_OPTION* = enum + CURL_NETRC_IGNORED, CURL_NETRC_OPTIONAL, CURL_NETRC_REQUIRED, + CURL_NETRC_LAST + + TCURL_SSL_VERSION* = enum + CURL_SSLVERSION_DEFAULT, CURL_SSLVERSION_TLSv1, CURL_SSLVERSION_SSLv2, + CURL_SSLVERSION_SSLv3, CURL_SSLVERSION_LAST + + TCURL_TIMECOND* = enum + CURL_TIMECOND_NONE, CURL_TIMECOND_IFMODSINCE, CURL_TIMECOND_IFUNMODSINCE, + CURL_TIMECOND_LASTMOD, CURL_TIMECOND_LAST + + TCURLformoption* = enum + CURLFORM_NOTHING, CURLFORM_COPYNAME, CURLFORM_PTRNAME, CURLFORM_NAMELENGTH, + CURLFORM_COPYCONTENTS, CURLFORM_PTRCONTENTS, CURLFORM_CONTENTSLENGTH, + CURLFORM_FILECONTENT, CURLFORM_ARRAY, CURLFORM_OBSOLETE, CURLFORM_FILE, + CURLFORM_BUFFER, CURLFORM_BUFFERPTR, CURLFORM_BUFFERLENGTH, + CURLFORM_CONTENTTYPE, CURLFORM_CONTENTHEADER, CURLFORM_FILENAME, + CURLFORM_END, CURLFORM_OBSOLETE2, CURLFORM_LASTENTRY + + Tcurl_forms* {.pure, final.} = object + option*: TCURLformoption + value*: cstring + + TCURLFORMcode* = enum + CURL_FORMADD_OK, CURL_FORMADD_MEMORY, CURL_FORMADD_OPTION_TWICE, + CURL_FORMADD_NULL, CURL_FORMADD_UNKNOWN_OPTION, CURL_FORMADD_INCOMPLETE, + CURL_FORMADD_ILLEGAL_ARRAY, CURL_FORMADD_DISABLED, CURL_FORMADD_LAST + + Tcurl_formget_callback* = proc (arg: pointer, buf: cstring, + length: int): int {.cdecl.} + Tcurl_slist* {.pure, final.} = object + data*: cstring + next*: Pcurl_slist + + TCURLINFO* = enum + CURLINFO_NONE = 0, + CURLINFO_LASTONE = 30, + CURLINFO_EFFECTIVE_URL = 0x00100000 + 1, + CURLINFO_CONTENT_TYPE = 0x00100000 + 18, + CURLINFO_PRIVATE = 0x00100000 + 21, + CURLINFO_FTP_ENTRY_PATH = 0x00100000 + 30, + + CURLINFO_RESPONSE_CODE = 0x00200000 + 2, + CURLINFO_HEADER_SIZE = 0x00200000 + 11, + CURLINFO_REQUEST_SIZE = 0x00200000 + 12, + CURLINFO_SSL_VERIFYRESULT = 0x00200000 + 13, + CURLINFO_FILETIME = 0x00200000 + 14, + CURLINFO_REDIRECT_COUNT = 0x00200000 + 20, + CURLINFO_HTTP_CONNECTCODE = 0x00200000 + 22, + CURLINFO_HTTPAUTH_AVAIL = 0x00200000 + 23, + CURLINFO_PROXYAUTH_AVAIL = 0x00200000 + 24, + CURLINFO_OS_ERRNO = 0x00200000 + 25, + CURLINFO_NUM_CONNECTS = 0x00200000 + 26, + CURLINFO_LASTSOCKET = 0x00200000 + 29, + + CURLINFO_TOTAL_TIME = 0x00300000 + 3, + CURLINFO_NAMELOOKUP_TIME = 0x00300000 + 4, + CURLINFO_CONNECT_TIME = 0x00300000 + 5, + CURLINFO_PRETRANSFER_TIME = 0x00300000 + 6, + CURLINFO_SIZE_UPLOAD = 0x00300000 + 7, + CURLINFO_SIZE_DOWNLOAD = 0x00300000 + 8, + CURLINFO_SPEED_DOWNLOAD = 0x00300000 + 9, + CURLINFO_SPEED_UPLOAD = 0x00300000 + 10, + CURLINFO_CONTENT_LENGTH_DOWNLOAD = 0x00300000 + 15, + CURLINFO_CONTENT_LENGTH_UPLOAD = 0x00300000 + 16, + CURLINFO_STARTTRANSFER_TIME = 0x00300000 + 17, + CURLINFO_REDIRECT_TIME = 0x00300000 + 19, + + CURLINFO_SSL_ENGINES = 0x00400000 + 27, + CURLINFO_COOKIELIST = 0x00400000 + 28 + + Tcurl_closepolicy* = enum + CURLCLOSEPOLICY_NONE, CURLCLOSEPOLICY_OLDEST, + CURLCLOSEPOLICY_LEAST_RECENTLY_USED, CURLCLOSEPOLICY_LEAST_TRAFFIC, + CURLCLOSEPOLICY_SLOWEST, CURLCLOSEPOLICY_CALLBACK, CURLCLOSEPOLICY_LAST + Tcurl_lock_data* = enum + CURL_LOCK_DATA_NONE = 0, CURL_LOCK_DATA_SHARE, CURL_LOCK_DATA_COOKIE, + CURL_LOCK_DATA_DNS, CURL_LOCK_DATA_SSL_SESSION, CURL_LOCK_DATA_CONNECT, + CURL_LOCK_DATA_LAST + Tcurl_lock_access* = enum + CURL_LOCK_ACCESS_NONE = 0, CURL_LOCK_ACCESS_SHARED = 1, + CURL_LOCK_ACCESS_SINGLE = 2, CURL_LOCK_ACCESS_LAST + + Tcurl_lock_function* = proc (handle: PCURL, data: Tcurl_lock_data, + locktype: Tcurl_lock_access, + userptr: pointer) {.cdecl.} + Tcurl_unlock_function* = proc (handle: PCURL, data: Tcurl_lock_data, + userptr: pointer) {.cdecl.} + TCURLSH* = pointer + TCURLSHcode* = enum + CURLSHE_OK, CURLSHE_BAD_OPTION, CURLSHE_IN_USE, CURLSHE_INVALID, + CURLSHE_NOMEM, CURLSHE_LAST + + TCURLSHoption* = enum + CURLSHOPT_NONE, CURLSHOPT_SHARE, CURLSHOPT_UNSHARE, CURLSHOPT_LOCKFUNC, + CURLSHOPT_UNLOCKFUNC, CURLSHOPT_USERDATA, CURLSHOPT_LAST + + TCURLversion* = enum + CURLVERSION_FIRST, CURLVERSION_SECOND, CURLVERSION_THIRD, CURLVERSION_LAST + + Tcurl_version_info_data* {.pure, final.} = object + age*: TCURLversion + version*: cstring + version_num*: int32 + host*: cstring + features*: int32 + ssl_version*: cstring + ssl_version_num*: int32 + libz_version*: cstring + protocols*: cstringArray + ares*: cstring + ares_num*: int32 + libidn*: cstring + iconv_ver_num*: int32 + + TCURLM* = pointer + Tcurl_socket* = int32 + TCURLMcode* = enum + CURLM_CALL_MULTI_PERFORM = -1, + CURLM_OK = 0, + CURLM_BAD_HANDLE, + CURLM_BAD_EASY_HANDLE, + CURLM_OUT_OF_MEMORY, + CURLM_INTERNAL_ERROR, + CURLM_BAD_SOCKET, + CURLM_UNKNOWN_OPTION, + CURLM_LAST + + TCURLMSGEnum* = enum + CURLMSG_NONE, CURLMSG_DONE, CURLMSG_LAST + TCURLMsg* {.pure, final.} = object + msg*: TCURLMSGEnum + easy_handle*: PCURL + whatever*: Pointer #data : record + # case longint of + # 0 : ( whatever : pointer ); + # 1 : ( result : CURLcode ); + # end; + + Tcurl_socket_callback* = proc (easy: PCURL, s: Tcurl_socket, what: int32, + userp, socketp: pointer): int32 {.cdecl.} + TCURLMoption* = enum + CURLMOPT_SOCKETDATA = 10000 + 2, + CURLMOPT_LASTENTRY = 10000 + 3, + CURLMOPT_SOCKETFUNCTION = 20000 + 1 + +const + CURLOPT_SSLKEYPASSWD* = CURLOPT_SSLCERTPASSWD + + CURLAUTH_ANY* = not (0) + CURLAUTH_BASIC* = 1 shl 0 + CURLAUTH_ANYSAFE* = not (CURLAUTH_BASIC) + CURLAUTH_DIGEST* = 1 shl 1 + CURLAUTH_GSSNEGOTIATE* = 1 shl 2 + CURLAUTH_NONE* = 0 + CURLAUTH_NTLM* = 1 shl 3 + CURLE_ALREADY_COMPLETE* = 99999 + CURLE_FTP_BAD_DOWNLOAD_RESUME* = CURLE_BAD_DOWNLOAD_RESUME + CURLE_FTP_PARTIAL_FILE* = CURLE_PARTIAL_FILE + CURLE_HTTP_NOT_FOUND* = CURLE_HTTP_RETURNED_ERROR + CURLE_HTTP_PORT_FAILED* = CURLE_INTERFACE_FAILED + CURLE_OPERATION_TIMEDOUT* = CURLE_OPERATION_TIMEOUTED + CURL_ERROR_SIZE* = 256 + CURL_FORMAT_OFF_T* = "%ld" + CURL_GLOBAL_NOTHING* = 0 + CURL_GLOBAL_SSL* = 1 shl 0 + CURL_GLOBAL_WIN32* = 1 shl 1 + CURL_GLOBAL_ALL* = CURL_GLOBAL_SSL or CURL_GLOBAL_WIN32 + CURL_GLOBAL_DEFAULT* = CURL_GLOBAL_ALL + CURLINFO_DOUBLE* = 0x00300000 + CURLINFO_HTTP_CODE* = CURLINFO_RESPONSE_CODE + CURLINFO_LONG* = 0x00200000 + CURLINFO_MASK* = 0x000FFFFF + CURLINFO_SLIST* = 0x00400000 + CURLINFO_STRING* = 0x00100000 + CURLINFO_TYPEMASK* = 0x00F00000 + CURL_IPRESOLVE_V4* = 1 + CURL_IPRESOLVE_V6* = 2 + CURL_IPRESOLVE_WHATEVER* = 0 + CURL_MAX_WRITE_SIZE* = 16384 + CURLM_CALL_MULTI_SOCKET* = CURLM_CALL_MULTI_PERFORM + CURLOPT_CLOSEFUNCTION* = - (5) + CURLOPT_FTPASCII* = CURLOPT_TRANSFERTEXT + CURLOPT_HEADERDATA* = CURLOPT_WRITEHEADER + CURLOPT_HTTPREQUEST* = - (1) + CURLOPT_MUTE* = - (2) + CURLOPT_PASSWDDATA* = - (4) + CURLOPT_PASSWDFUNCTION* = - (3) + CURLOPT_PASV_HOST* = - (9) + CURLOPT_READDATA* = CURLOPT_INFILE + CURLOPT_SOURCE_HOST* = - (6) + CURLOPT_SOURCE_PATH* = - (7) + CURLOPT_SOURCE_PORT* = - (8) + CURLOPTTYPE_FUNCTIONPOINT* = 20000 + CURLOPTTYPE_LONG* = 0 + CURLOPTTYPE_OBJECTPOINT* = 10000 + CURLOPTTYPE_OFF_T* = 30000 + CURLOPT_WRITEDATA* = CURLOPT_FILE + CURL_POLL_IN* = 1 + CURL_POLL_INOUT* = 3 + CURL_POLL_NONE* = 0 + CURL_POLL_OUT* = 2 + CURL_POLL_REMOVE* = 4 + CURL_READFUNC_ABORT* = 0x10000000 + CURL_SOCKET_BAD* = - (1) + CURL_SOCKET_TIMEOUT* = CURL_SOCKET_BAD + CURL_VERSION_ASYNCHDNS* = 1 shl 7 + CURL_VERSION_CONV* = 1 shl 12 + CURL_VERSION_DEBUG* = 1 shl 6 + CURL_VERSION_GSSNEGOTIATE* = 1 shl 5 + CURL_VERSION_IDN* = 1 shl 10 + CURL_VERSION_IPV6* = 1 shl 0 + CURL_VERSION_KERBEROS4* = 1 shl 1 + CURL_VERSION_LARGEFILE* = 1 shl 9 + CURL_VERSION_LIBZ* = 1 shl 3 + CURLVERSION_NOW* = CURLVERSION_THIRD + CURL_VERSION_NTLM* = 1 shl 4 + CURL_VERSION_SPNEGO* = 1 shl 8 + CURL_VERSION_SSL* = 1 shl 2 + CURL_VERSION_SSPI* = 1 shl 11 + FILE_OFFSET_BITS* = 0 + FILESIZEBITS* = 0 + FUNCTIONPOINT* = CURLOPTTYPE_FUNCTIONPOINT + HTTPPOST_BUFFER* = 1 shl 4 + HTTPPOST_FILENAME* = 1 shl 0 + HTTPPOST_PTRBUFFER* = 1 shl 5 + HTTPPOST_PTRCONTENTS* = 1 shl 3 + HTTPPOST_PTRNAME* = 1 shl 2 + HTTPPOST_READFILE* = 1 shl 1 + LIBCURL_VERSION* = "7.15.5" + LIBCURL_VERSION_MAJOR* = 7 + LIBCURL_VERSION_MINOR* = 15 + LIBCURL_VERSION_NUM* = 0x00070F05 + LIBCURL_VERSION_PATCH* = 5 + +proc curl_strequal*(s1, s2: cstring): int32{.cdecl, + dynlib: libname, importc: "curl_strequal".} +proc curl_strnequal*(s1, s2: cstring, n: int): int32 {.cdecl, + dynlib: libname, importc: "curl_strnequal".} +proc curl_formadd*(httppost, last_post: PPcurl_httppost): TCURLFORMcode {. + cdecl, varargs, dynlib: libname, importc: "curl_formadd".} + +proc curl_formget*(form: Pcurl_httppost, arg: pointer, + append: Tcurl_formget_callback): int32 {.cdecl, + dynlib: libname, importc: "curl_formget".} +proc curl_formfree*(form: Pcurl_httppost){.cdecl, dynlib: libname, + importc: "curl_formfree".} +proc curl_getenv*(variable: cstring): cstring{.cdecl, dynlib: libname, + importc: "curl_getenv".} +proc curl_version*(): cstring{.cdecl, dynlib: libname, importc: "curl_version".} +proc curl_easy_escape*(handle: PCURL, str: cstring, len: int32): cstring{.cdecl, + dynlib: libname, importc: "curl_easy_escape".} +proc curl_escape*(str: cstring, len: int32): cstring{.cdecl, + dynlib: libname, importc: "curl_escape".} +proc curl_easy_unescape*(handle: PCURL, str: cstring, len: int32, + outlength: var int32): cstring{.cdecl, + dynlib: libname, importc: "curl_easy_unescape".} +proc curl_unescape*(str: cstring, len: int32): cstring{.cdecl, + dynlib: libname, importc: "curl_unescape".} +proc curl_free*(p: pointer){.cdecl, dynlib: libname, + importc: "curl_free".} +proc curl_global_init*(flags: int32): TCURLcode {.cdecl, dynlib: libname, + importc: "curl_global_init".} +proc curl_global_init_mem*(flags: int32, m: Tcurl_malloc_callback, + f: Tcurl_free_callback, r: Tcurl_realloc_callback, + s: Tcurl_strdup_callback, + c: Tcurl_calloc_callback): TCURLcode {. + cdecl, dynlib: libname, importc: "curl_global_init_mem".} +proc curl_global_cleanup*() {.cdecl, dynlib: libname, + importc: "curl_global_cleanup".} +proc curl_slist_append*(curl_slist: Pcurl_slist, P: cstring): Pcurl_slist {. + cdecl, dynlib: libname, importc: "curl_slist_append".} +proc curl_slist_free_all*(para1: Pcurl_slist) {.cdecl, dynlib: libname, + importc: "curl_slist_free_all".} +proc curl_getdate*(p: cstring, unused: ptr TTime): TTime {.cdecl, + dynlib: libname, importc: "curl_getdate".} +proc curl_share_init*(): PCURLSH{.cdecl, dynlib: libname, + importc: "curl_share_init".} +proc curl_share_setopt*(para1: PCURLSH, option: TCURLSHoption): TCURLSHcode {. + cdecl, varargs, dynlib: libname, importc: "curl_share_setopt".} + +proc curl_share_cleanup*(para1: PCURLSH): TCURLSHcode {.cdecl, + dynlib: libname, importc: "curl_share_cleanup".} +proc curl_version_info*(para1: TCURLversion): Pcurl_version_info_data{.cdecl, + dynlib: libname, importc: "curl_version_info".} +proc curl_easy_strerror*(para1: TCURLcode): cstring {.cdecl, + dynlib: libname, importc: "curl_easy_strerror".} +proc curl_share_strerror*(para1: TCURLSHcode): cstring {.cdecl, + dynlib: libname, importc: "curl_share_strerror".} +proc curl_easy_init*(): PCURL {.cdecl, dynlib: libname, + importc: "curl_easy_init".} +proc curl_easy_setopt*(curl: PCURL, option: TCURLoption): TCURLcode {.cdecl, + varargs, dynlib: libname, importc: "curl_easy_setopt".} + +proc curl_easy_perform*(curl: PCURL): TCURLcode {.cdecl, dynlib: libname, + importc: "curl_easy_perform".} +proc curl_easy_cleanup*(curl: PCURL) {.cdecl, dynlib: libname, + importc: "curl_easy_cleanup".} +proc curl_easy_getinfo*(curl: PCURL, info: TCURLINFO): TCURLcode {. + cdecl, varargs, dynlib: libname, importc: "curl_easy_getinfo".} + +proc curl_easy_duphandle*(curl: PCURL): PCURL {.cdecl, dynlib: libname, + importc: "curl_easy_duphandle".} +proc curl_easy_reset*(curl: PCURL) {.cdecl, dynlib: libname, + importc: "curl_easy_reset".} +proc curl_multi_init*(): PCURLM {.cdecl, dynlib: libname, + importc: "curl_multi_init".} +proc curl_multi_add_handle*(multi_handle: PCURLM, + curl_handle: PCURL): TCURLMcode {. + cdecl, dynlib: libname, importc: "curl_multi_add_handle".} +proc curl_multi_remove_handle*(multi_handle: PCURLM, + curl_handle: PCURL): TCURLMcode {. + cdecl, dynlib: libname, importc: "curl_multi_remove_handle".} +proc curl_multi_fdset*(multi_handle: PCURLM, read_fd_set: Pfd_set, + write_fd_set: Pfd_set, exc_fd_set: Pfd_set, + max_fd: var int32): TCURLMcode {.cdecl, + dynlib: libname, importc: "curl_multi_fdset".} +proc curl_multi_perform*(multi_handle: PCURLM, + running_handles: var int32): TCURLMcode {. + cdecl, dynlib: libname, importc: "curl_multi_perform".} +proc curl_multi_cleanup*(multi_handle: PCURLM): TCURLMcode {.cdecl, + dynlib: libname, importc: "curl_multi_cleanup".} +proc curl_multi_info_read*(multi_handle: PCURLM, + msgs_in_queue: var int32): PCURLMsg {. + cdecl, dynlib: libname, importc: "curl_multi_info_read".} +proc curl_multi_strerror*(para1: TCURLMcode): cstring {.cdecl, + dynlib: libname, importc: "curl_multi_strerror".} +proc curl_multi_socket*(multi_handle: PCURLM, s: Tcurl_socket, + running_handles: var int32): TCURLMcode {.cdecl, + dynlib: libname, importc: "curl_multi_socket".} +proc curl_multi_socket_all*(multi_handle: PCURLM, + running_handles: var int32): TCURLMcode {. + cdecl, dynlib: libname, importc: "curl_multi_socket_all".} +proc curl_multi_timeout*(multi_handle: PCURLM, milliseconds: var int32): TCURLMcode{. + cdecl, dynlib: libname, importc: "curl_multi_timeout".} +proc curl_multi_setopt*(multi_handle: PCURLM, option: TCURLMoption): TCURLMcode{. + cdecl, varargs, dynlib: libname, importc: "curl_multi_setopt".} + +proc curl_multi_assign*(multi_handle: PCURLM, sockfd: Tcurl_socket, + sockp: pointer): TCURLMcode {.cdecl, + dynlib: libname, importc: "curl_multi_assign".} + + |