Search the Community
Showing results for tags 'libcurl'.
-
I built my own libcurl for AutoIt based on BinaryCall UDF. libcurl - the multiprotocol file transfer library The Features: Pure AutoIt script, no DLLs needed.Build with SSL/TLS and zlib support (without libidn, libiconv, libssh2).Full easy-interface and partial multi-interface support.Data can read from or write to autoit variables or files.Smaller code size (compare to most libcurl DLL).The version information of this build: Curl Version: libcurl/7.42.1SSL Version: mbedTLS/1.3.10Libz Version: 1.2.8Protocols: ftp,ftps,http,httpsHere are the helper functions (not include in libcurl library). Curl_DataWriteCallback()Curl_DataReadCallback()Curl_FileWriteCallback()Curl_FileReadCallback()Curl_Data_Put()Curl_Data_Get()Curl_Data_Cleanup()See the example script for detail usage. Curl.zip
-
Here is a UDF geared at making libcurl more accessible to AutoIt users. Homepage of curl and libcurl: http://curl.haxx.se Technical overview: libcurl is a free and easy-to-use client-side URL transfer library, supporting DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, Telnet and TFTP. libcurl supports SSL certificates, HTTP POST, HTTP PUT, FTP uploading, HTTP form based upload, proxies, cookies, user+password authentication (Basic, Digest, NTLM, Negotiate, Kerberos), file transfer resume, http proxy tunneling and more! (from http://curl.haxx.se/libcurl/) Features: This UDF wraps the "easy" interface of libcurl. Below is a complete list of the functions currently available in this library: ; #CURRENT# ===================================================================================================================== ;_curl_easy_escape ;_curl_easy_init ;_curl_easy_cleanup ;_curl_easy_duphandle ;_curl_easy_getinfo ;_curl_easy_pause ;_curl_easy_perform ;_curl_easy_recv ;_curl_easy_reset ;_curl_easy_send ;_curl_easy_setopt ;_curl_easy_strerror ;_curl_easy_unescape ;_curl_formadd ;_curl_formfree ;_curl_free ;_curl_getdate ;_curl_global_cleanup ;_curl_global_init ;_curl_global_init_mem ;_curl_slist_append ;_curl_slist_free_all ;_curl_version ;_curl_version_info ; =============================================================================================================================== Code: libcURLConstants.au3 #include-once ; libcURLConstants.au3, generated from curl.h of libcurl 7.25.0 on 04/06/2012 05:11:23 GMT for use with "libcURL.au3", the libcurl wrapper UDF by smartee. ; possible error codes from all sorts of curl functions Global Const $CURLE_OK = 0 Global Const $CURLE_UNSUPPORTED_PROTOCOL = 1 Global Const $CURLE_FAILED_INIT = 2 Global Const $CURLE_URL_MALFORMAT = 3 Global Const $CURLE_NOT_BUILT_IN = 4 Global Const $CURLE_COULDNT_RESOLVE_PROXY = 5 Global Const $CURLE_COULDNT_RESOLVE_HOST = 6 Global Const $CURLE_COULDNT_CONNECT = 7 Global Const $CURLE_FTP_WEIRD_SERVER_REPLY = 8 Global Const $CURLE_REMOTE_ACCESS_DENIED = 9 Global Const $CURLE_FTP_ACCEPT_FAILED = 10 Global Const $CURLE_FTP_WEIRD_PASS_REPLY = 11 Global Const $CURLE_FTP_ACCEPT_TIMEOUT = 12 Global Const $CURLE_FTP_WEIRD_PASV_REPLY = 13 Global Const $CURLE_FTP_WEIRD_227_FORMAT = 14 Global Const $CURLE_FTP_CANT_GET_HOST = 15 Global Const $CURLE_OBSOLETE16 = 16 Global Const $CURLE_FTP_COULDNT_SET_TYPE = 17 Global Const $CURLE_PARTIAL_FILE = 18 Global Const $CURLE_FTP_COULDNT_RETR_FILE = 19 Global Const $CURLE_OBSOLETE20 = 20 Global Const $CURLE_QUOTE_ERROR = 21 Global Const $CURLE_HTTP_RETURNED_ERROR = 22 Global Const $CURLE_WRITE_ERROR = 23 Global Const $CURLE_OBSOLETE24 = 24 Global Const $CURLE_UPLOAD_FAILED = 25 Global Const $CURLE_READ_ERROR = 26 Global Const $CURLE_OUT_OF_MEMORY = 27 Global Const $CURLE_OPERATION_TIMEDOUT = 28 Global Const $CURLE_OBSOLETE29 = 29 Global Const $CURLE_FTP_PORT_FAILED = 30 Global Const $CURLE_FTP_COULDNT_USE_REST = 31 Global Const $CURLE_OBSOLETE32 = 32 Global Const $CURLE_RANGE_ERROR = 33 Global Const $CURLE_HTTP_POST_ERROR = 34 Global Const $CURLE_SSL_CONNECT_ERROR = 35 Global Const $CURLE_BAD_DOWNLOAD_RESUME = 36 Global Const $CURLE_FILE_COULDNT_READ_FILE = 37 Global Const $CURLE_LDAP_CANNOT_BIND = 38 Global Const $CURLE_LDAP_SEARCH_FAILED = 39 Global Const $CURLE_OBSOLETE40 = 40 Global Const $CURLE_FUNCTION_NOT_FOUND = 41 Global Const $CURLE_ABORTED_BY_CALLBACK = 42 Global Const $CURLE_BAD_FUNCTION_ARGUMENT = 43 Global Const $CURLE_OBSOLETE44 = 44 Global Const $CURLE_INTERFACE_FAILED = 45 Global Const $CURLE_OBSOLETE46 = 46 Global Const $CURLE_TOO_MANY_REDIRECTS = 47 Global Const $CURLE_UNKNOWN_OPTION = 48 Global Const $CURLE_TELNET_OPTION_SYNTAX = 49 Global Const $CURLE_OBSOLETE50 = 50 Global Const $CURLE_PEER_FAILED_VERIFICATION = 51 Global Const $CURLE_GOT_NOTHING = 52 Global Const $CURLE_SSL_ENGINE_NOTFOUND = 53 Global Const $CURLE_SSL_ENGINE_SETFAILED = 54 Global Const $CURLE_SEND_ERROR = 55 Global Const $CURLE_RECV_ERROR = 56 Global Const $CURLE_OBSOLETE57 = 57 Global Const $CURLE_SSL_CERTPROBLEM = 58 Global Const $CURLE_SSL_CIPHER = 59 Global Const $CURLE_SSL_CACERT = 60 Global Const $CURLE_BAD_CONTENT_ENCODING = 61 Global Const $CURLE_LDAP_INVALID_URL = 62 Global Const $CURLE_FILESIZE_EXCEEDED = 63 Global Const $CURLE_USE_SSL_FAILED = 64 Global Const $CURLE_SEND_FAIL_REWIND = 65 Global Const $CURLE_SSL_ENGINE_INITFAILED = 66 Global Const $CURLE_LOGIN_DENIED = 67 Global Const $CURLE_TFTP_NOTFOUND = 68 Global Const $CURLE_TFTP_PERM = 69 Global Const $CURLE_REMOTE_DISK_FULL = 70 Global Const $CURLE_TFTP_ILLEGAL = 71 Global Const $CURLE_TFTP_UNKNOWNID = 72 Global Const $CURLE_REMOTE_FILE_EXISTS = 73 Global Const $CURLE_TFTP_NOSUCHUSER = 74 Global Const $CURLE_CONV_FAILED = 75 Global Const $CURLE_CONV_REQD = 76 Global Const $CURLE_SSL_CACERT_BADFILE = 77 Global Const $CURLE_REMOTE_FILE_NOT_FOUND = 78 Global Const $CURLE_SSH = 79 Global Const $CURLE_SSL_SHUTDOWN_FAILED = 80 Global Const $CURLE_AGAIN = 81 Global Const $CURLE_SSL_CRL_BADFILE = 82 Global Const $CURLE_SSL_ISSUER_ERROR = 83 Global Const $CURLE_FTP_PRET_FAILED = 84 Global Const $CURLE_RTSP_CSEQ_ERROR = 85 Global Const $CURLE_RTSP_SESSION_ERROR = 86 Global Const $CURLE_FTP_BAD_FILE_LIST = 87 Global Const $CURLE_CHUNK_FAILED = 88 ; minimum size of error buffer to be used with $CURLOPT_ERRORBUFFER Global Const $CURL_ERROR_SIZE = 256 ; $CURLPROTO_ constants are for the $CURLOPT_*PROTOCOLS options Global Const $CURLPROTO_HTTP = BitShift(1, 0) Global Const $CURLPROTO_HTTPS = BitShift(1, -1) Global Const $CURLPROTO_FTP = BitShift(1, -2) Global Const $CURLPROTO_FTPS = BitShift(1, -3) Global Const $CURLPROTO_SCP = BitShift(1, -4) Global Const $CURLPROTO_SFTP = BitShift(1, -5) Global Const $CURLPROTO_TELNET = BitShift(1, -6) Global Const $CURLPROTO_LDAP = BitShift(1, -7) Global Const $CURLPROTO_LDAPS = BitShift(1, -8) Global Const $CURLPROTO_DICT = BitShift(1, -9) Global Const $CURLPROTO_FILE = BitShift(1, -10) Global Const $CURLPROTO_TFTP = BitShift(1, -11) Global Const $CURLPROTO_IMAP = BitShift(1, -12) Global Const $CURLPROTO_IMAPS = BitShift(1, -13) Global Const $CURLPROTO_POP3 = BitShift(1, -14) Global Const $CURLPROTO_POP3S = BitShift(1, -15) Global Const $CURLPROTO_SMTP = BitShift(1, -16) Global Const $CURLPROTO_SMTPS = BitShift(1, -17) Global Const $CURLPROTO_RTSP = BitShift(1, -18) Global Const $CURLPROTO_RTMP = BitShift(1, -19) Global Const $CURLPROTO_RTMPT = BitShift(1, -20) Global Const $CURLPROTO_RTMPE = BitShift(1, -21) Global Const $CURLPROTO_RTMPTE = BitShift(1, -22) Global Const $CURLPROTO_RTMPS = BitShift(1, -23) Global Const $CURLPROTO_RTMPTS = BitShift(1, -24) Global Const $CURLPROTO_GOPHER = BitShift(1, -25) Global Const $CURLPROTO_ALL = BitNOT(0) ; $CURLOPTTYPE_[what] constants Global Const $CURLOPTTYPE_LONG = 0 Global Const $CURLOPTTYPE_OBJECTPOINT = 10000 Global Const $CURLOPTTYPE_FUNCTIONPOINT = 20000 Global Const $CURLOPTTYPE_OFF_T = 30000 ; $CURLOPT_[what] constants, to be used with _curl_easy_setopt() Global Const $CURLOPT_FILE = $CURLOPTTYPE_OBJECTPOINT + 1 Global Const $CURLOPT_URL = $CURLOPTTYPE_OBJECTPOINT + 2 Global Const $CURLOPT_PORT = $CURLOPTTYPE_LONG + 3 Global Const $CURLOPT_PROXY = $CURLOPTTYPE_OBJECTPOINT + 4 Global Const $CURLOPT_USERPWD = $CURLOPTTYPE_OBJECTPOINT + 5 Global Const $CURLOPT_PROXYUSERPWD = $CURLOPTTYPE_OBJECTPOINT + 6 Global Const $CURLOPT_RANGE = $CURLOPTTYPE_OBJECTPOINT + 7 Global Const $CURLOPT_INFILE = $CURLOPTTYPE_OBJECTPOINT + 9 Global Const $CURLOPT_ERRORBUFFER = $CURLOPTTYPE_OBJECTPOINT + 10 Global Const $CURLOPT_WRITEFUNCTION = $CURLOPTTYPE_FUNCTIONPOINT + 11 Global Const $CURLOPT_READFUNCTION = $CURLOPTTYPE_FUNCTIONPOINT + 12 Global Const $CURLOPT_TIMEOUT = $CURLOPTTYPE_LONG + 13 Global Const $CURLOPT_INFILESIZE = $CURLOPTTYPE_LONG + 14 Global Const $CURLOPT_POSTFIELDS = $CURLOPTTYPE_OBJECTPOINT + 15 Global Const $CURLOPT_REFERER = $CURLOPTTYPE_OBJECTPOINT + 16 Global Const $CURLOPT_FTPPORT = $CURLOPTTYPE_OBJECTPOINT + 17 Global Const $CURLOPT_USERAGENT = $CURLOPTTYPE_OBJECTPOINT + 18 Global Const $CURLOPT_LOW_SPEED_LIMIT = $CURLOPTTYPE_LONG + 19 Global Const $CURLOPT_LOW_SPEED_TIME = $CURLOPTTYPE_LONG + 20 Global Const $CURLOPT_RESUME_FROM = $CURLOPTTYPE_LONG + 21 Global Const $CURLOPT_COOKIE = $CURLOPTTYPE_OBJECTPOINT + 22 Global Const $CURLOPT_HTTPHEADER = $CURLOPTTYPE_OBJECTPOINT + 23 Global Const $CURLOPT_HTTPPOST = $CURLOPTTYPE_OBJECTPOINT + 24 Global Const $CURLOPT_SSLCERT = $CURLOPTTYPE_OBJECTPOINT + 25 Global Const $CURLOPT_KEYPASSWD = $CURLOPTTYPE_OBJECTPOINT + 26 Global Const $CURLOPT_CRLF = $CURLOPTTYPE_LONG + 27 Global Const $CURLOPT_QUOTE = $CURLOPTTYPE_OBJECTPOINT + 28 Global Const $CURLOPT_WRITEHEADER = $CURLOPTTYPE_OBJECTPOINT + 29 Global Const $CURLOPT_COOKIEFILE = $CURLOPTTYPE_OBJECTPOINT + 31 Global Const $CURLOPT_SSLVERSION = $CURLOPTTYPE_LONG + 32 Global Const $CURLOPT_TIMECONDITION = $CURLOPTTYPE_LONG + 33 Global Const $CURLOPT_TIMEVALUE = $CURLOPTTYPE_LONG + 34 Global Const $CURLOPT_CUSTOMREQUEST = $CURLOPTTYPE_OBJECTPOINT + 36 Global Const $CURLOPT_STDERR = $CURLOPTTYPE_OBJECTPOINT + 37 Global Const $CURLOPT_POSTQUOTE = $CURLOPTTYPE_OBJECTPOINT + 39 Global Const $CURLOPT_WRITEINFO = $CURLOPTTYPE_OBJECTPOINT + 40 Global Const $CURLOPT_VERBOSE = $CURLOPTTYPE_LONG + 41 Global Const $CURLOPT_HEADER = $CURLOPTTYPE_LONG + 42 Global Const $CURLOPT_NOPROGRESS = $CURLOPTTYPE_LONG + 43 Global Const $CURLOPT_NOBODY = $CURLOPTTYPE_LONG + 44 Global Const $CURLOPT_FAILONERROR = $CURLOPTTYPE_LONG + 45 Global Const $CURLOPT_UPLOAD = $CURLOPTTYPE_LONG + 46 Global Const $CURLOPT_POST = $CURLOPTTYPE_LONG + 47 Global Const $CURLOPT_DIRLISTONLY = $CURLOPTTYPE_LONG + 48 Global Const $CURLOPT_APPEND = $CURLOPTTYPE_LONG + 50 Global Const $CURLOPT_NETRC = $CURLOPTTYPE_LONG + 51 Global Const $CURLOPT_FOLLOWLOCATION = $CURLOPTTYPE_LONG + 52 Global Const $CURLOPT_TRANSFERTEXT = $CURLOPTTYPE_LONG + 53 Global Const $CURLOPT_PUT = $CURLOPTTYPE_LONG + 54 Global Const $CURLOPT_PROGRESSFUNCTION = $CURLOPTTYPE_FUNCTIONPOINT + 56 Global Const $CURLOPT_PROGRESSDATA = $CURLOPTTYPE_OBJECTPOINT + 57 Global Const $CURLOPT_AUTOREFERER = $CURLOPTTYPE_LONG + 58 Global Const $CURLOPT_PROXYPORT = $CURLOPTTYPE_LONG + 59 Global Const $CURLOPT_POSTFIELDSIZE = $CURLOPTTYPE_LONG + 60 Global Const $CURLOPT_HTTPPROXYTUNNEL = $CURLOPTTYPE_LONG + 61 Global Const $CURLOPT_INTERFACE = $CURLOPTTYPE_OBJECTPOINT + 62 Global Const $CURLOPT_KRBLEVEL = $CURLOPTTYPE_OBJECTPOINT + 63 Global Const $CURLOPT_SSL_VERIFYPEER = $CURLOPTTYPE_LONG + 64 Global Const $CURLOPT_CAINFO = $CURLOPTTYPE_OBJECTPOINT + 65 Global Const $CURLOPT_MAXREDIRS = $CURLOPTTYPE_LONG + 68 Global Const $CURLOPT_FILETIME = $CURLOPTTYPE_LONG + 69 Global Const $CURLOPT_TELNETOPTIONS = $CURLOPTTYPE_OBJECTPOINT + 70 Global Const $CURLOPT_MAXCONNECTS = $CURLOPTTYPE_LONG + 71 Global Const $CURLOPT_CLOSEPOLICY = $CURLOPTTYPE_LONG + 72 Global Const $CURLOPT_FRESH_CONNECT = $CURLOPTTYPE_LONG + 74 Global Const $CURLOPT_FORBID_REUSE = $CURLOPTTYPE_LONG + 75 Global Const $CURLOPT_RANDOM_FILE = $CURLOPTTYPE_OBJECTPOINT + 76 Global Const $CURLOPT_EGDSOCKET = $CURLOPTTYPE_OBJECTPOINT + 77 Global Const $CURLOPT_CONNECTTIMEOUT = $CURLOPTTYPE_LONG + 78 Global Const $CURLOPT_HEADERFUNCTION = $CURLOPTTYPE_FUNCTIONPOINT + 79 Global Const $CURLOPT_HTTPGET = $CURLOPTTYPE_LONG + 80 Global Const $CURLOPT_SSL_VERIFYHOST = $CURLOPTTYPE_LONG + 81 Global Const $CURLOPT_COOKIEJAR = $CURLOPTTYPE_OBJECTPOINT + 82 Global Const $CURLOPT_SSL_CIPHER_LIST = $CURLOPTTYPE_OBJECTPOINT + 83 Global Const $CURLOPT_HTTP_VERSION = $CURLOPTTYPE_LONG + 84 Global Const $CURLOPT_FTP_USE_EPSV = $CURLOPTTYPE_LONG + 85 Global Const $CURLOPT_SSLCERTTYPE = $CURLOPTTYPE_OBJECTPOINT + 86 Global Const $CURLOPT_SSLKEY = $CURLOPTTYPE_OBJECTPOINT + 87 Global Const $CURLOPT_SSLKEYTYPE = $CURLOPTTYPE_OBJECTPOINT + 88 Global Const $CURLOPT_SSLENGINE = $CURLOPTTYPE_OBJECTPOINT + 89 Global Const $CURLOPT_SSLENGINE_DEFAULT = $CURLOPTTYPE_LONG + 90 Global Const $CURLOPT_DNS_USE_GLOBAL_CACHE = $CURLOPTTYPE_LONG + 91 Global Const $CURLOPT_DNS_CACHE_TIMEOUT = $CURLOPTTYPE_LONG + 92 Global Const $CURLOPT_PREQUOTE = $CURLOPTTYPE_OBJECTPOINT + 93 Global Const $CURLOPT_DEBUGFUNCTION = $CURLOPTTYPE_FUNCTIONPOINT + 94 Global Const $CURLOPT_DEBUGDATA = $CURLOPTTYPE_OBJECTPOINT + 95 Global Const $CURLOPT_COOKIESESSION = $CURLOPTTYPE_LONG + 96 Global Const $CURLOPT_CAPATH = $CURLOPTTYPE_OBJECTPOINT + 97 Global Const $CURLOPT_BUFFERSIZE = $CURLOPTTYPE_LONG + 98 Global Const $CURLOPT_NOSIGNAL = $CURLOPTTYPE_LONG + 99 Global Const $CURLOPT_SHARE = $CURLOPTTYPE_OBJECTPOINT + 100 Global Const $CURLOPT_PROXYTYPE = $CURLOPTTYPE_LONG + 101 Global Const $CURLOPT_ACCEPT_ENCODING = $CURLOPTTYPE_OBJECTPOINT + 102 Global Const $CURLOPT_PRIVATE = $CURLOPTTYPE_OBJECTPOINT + 103 Global Const $CURLOPT_HTTP200ALIASES = $CURLOPTTYPE_OBJECTPOINT + 104 Global Const $CURLOPT_UNRESTRICTED_AUTH = $CURLOPTTYPE_LONG + 105 Global Const $CURLOPT_FTP_USE_EPRT = $CURLOPTTYPE_LONG + 106 Global Const $CURLOPT_HTTPAUTH = $CURLOPTTYPE_LONG + 107 Global Const $CURLOPT_SSL_CTX_FUNCTION = $CURLOPTTYPE_FUNCTIONPOINT + 108 Global Const $CURLOPT_SSL_CTX_DATA = $CURLOPTTYPE_OBJECTPOINT + 109 Global Const $CURLOPT_FTP_CREATE_MISSING_DIRS = $CURLOPTTYPE_LONG + 110 Global Const $CURLOPT_PROXYAUTH = $CURLOPTTYPE_LONG + 111 Global Const $CURLOPT_FTP_RESPONSE_TIMEOUT = $CURLOPTTYPE_LONG + 112 Global Const $CURLOPT_IPRESOLVE = $CURLOPTTYPE_LONG + 113 Global Const $CURLOPT_MAXFILESIZE = $CURLOPTTYPE_LONG + 114 Global Const $CURLOPT_INFILESIZE_LARGE = $CURLOPTTYPE_OFF_T + 115 Global Const $CURLOPT_RESUME_FROM_LARGE = $CURLOPTTYPE_OFF_T + 116 Global Const $CURLOPT_MAXFILESIZE_LARGE = $CURLOPTTYPE_OFF_T + 117 Global Const $CURLOPT_NETRC_FILE = $CURLOPTTYPE_OBJECTPOINT + 118 Global Const $CURLOPT_USE_SSL = $CURLOPTTYPE_LONG + 119 Global Const $CURLOPT_POSTFIELDSIZE_LARGE = $CURLOPTTYPE_OFF_T + 120 Global Const $CURLOPT_TCP_NODELAY = $CURLOPTTYPE_LONG + 121 Global Const $CURLOPT_FTPSSLAUTH = $CURLOPTTYPE_LONG + 129 Global Const $CURLOPT_IOCTLFUNCTION = $CURLOPTTYPE_FUNCTIONPOINT + 130 Global Const $CURLOPT_IOCTLDATA = $CURLOPTTYPE_OBJECTPOINT + 131 Global Const $CURLOPT_FTP_ACCOUNT = $CURLOPTTYPE_OBJECTPOINT + 134 Global Const $CURLOPT_COOKIELIST = $CURLOPTTYPE_OBJECTPOINT + 135 Global Const $CURLOPT_IGNORE_CONTENT_LENGTH = $CURLOPTTYPE_LONG + 136 Global Const $CURLOPT_FTP_SKIP_PASV_IP = $CURLOPTTYPE_LONG + 137 Global Const $CURLOPT_FTP_FILEMETHOD = $CURLOPTTYPE_LONG + 138 Global Const $CURLOPT_LOCALPORT = $CURLOPTTYPE_LONG + 139 Global Const $CURLOPT_LOCALPORTRANGE = $CURLOPTTYPE_LONG + 140 Global Const $CURLOPT_CONNECT_ONLY = $CURLOPTTYPE_LONG + 141 Global Const $CURLOPT_CONV_FROM_NETWORK_FUNCTION = $CURLOPTTYPE_FUNCTIONPOINT + 142 Global Const $CURLOPT_CONV_TO_NETWORK_FUNCTION = $CURLOPTTYPE_FUNCTIONPOINT + 143 Global Const $CURLOPT_CONV_FROM_UTF8_FUNCTION = $CURLOPTTYPE_FUNCTIONPOINT + 144 Global Const $CURLOPT_MAX_SEND_SPEED_LARGE = $CURLOPTTYPE_OFF_T + 145 Global Const $CURLOPT_MAX_RECV_SPEED_LARGE = $CURLOPTTYPE_OFF_T + 146 Global Const $CURLOPT_FTP_ALTERNATIVE_TO_USER = $CURLOPTTYPE_OBJECTPOINT + 147 Global Const $CURLOPT_SOCKOPTFUNCTION = $CURLOPTTYPE_FUNCTIONPOINT + 148 Global Const $CURLOPT_SOCKOPTDATA = $CURLOPTTYPE_OBJECTPOINT + 149 Global Const $CURLOPT_SSL_SESSIONID_CACHE = $CURLOPTTYPE_LONG + 150 Global Const $CURLOPT_SSH_AUTH_TYPES = $CURLOPTTYPE_LONG + 151 Global Const $CURLOPT_SSH_PUBLIC_KEYFILE = $CURLOPTTYPE_OBJECTPOINT + 152 Global Const $CURLOPT_SSH_PRIVATE_KEYFILE = $CURLOPTTYPE_OBJECTPOINT + 153 Global Const $CURLOPT_FTP_SSL_CCC = $CURLOPTTYPE_LONG + 154 Global Const $CURLOPT_TIMEOUT_MS = $CURLOPTTYPE_LONG + 155 Global Const $CURLOPT_CONNECTTIMEOUT_MS = $CURLOPTTYPE_LONG + 156 Global Const $CURLOPT_HTTP_TRANSFER_DECODING = $CURLOPTTYPE_LONG + 157 Global Const $CURLOPT_HTTP_CONTENT_DECODING = $CURLOPTTYPE_LONG + 158 Global Const $CURLOPT_NEW_FILE_PERMS = $CURLOPTTYPE_LONG + 159 Global Const $CURLOPT_NEW_DIRECTORY_PERMS = $CURLOPTTYPE_LONG + 160 Global Const $CURLOPT_POSTREDIR = $CURLOPTTYPE_LONG + 161 Global Const $CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 = $CURLOPTTYPE_OBJECTPOINT + 162 Global Const $CURLOPT_OPENSOCKETFUNCTION = $CURLOPTTYPE_FUNCTIONPOINT + 163 Global Const $CURLOPT_OPENSOCKETDATA = $CURLOPTTYPE_OBJECTPOINT + 164 Global Const $CURLOPT_COPYPOSTFIELDS = $CURLOPTTYPE_OBJECTPOINT + 165 Global Const $CURLOPT_PROXY_TRANSFER_MODE = $CURLOPTTYPE_LONG + 166 Global Const $CURLOPT_SEEKFUNCTION = $CURLOPTTYPE_FUNCTIONPOINT + 167 Global Const $CURLOPT_SEEKDATA = $CURLOPTTYPE_OBJECTPOINT + 168 Global Const $CURLOPT_CRLFILE = $CURLOPTTYPE_OBJECTPOINT + 169 Global Const $CURLOPT_ISSUERCERT = $CURLOPTTYPE_OBJECTPOINT + 170 Global Const $CURLOPT_ADDRESS_SCOPE = $CURLOPTTYPE_LONG + 171 Global Const $CURLOPT_CERTINFO = $CURLOPTTYPE_LONG + 172 Global Const $CURLOPT_USERNAME = $CURLOPTTYPE_OBJECTPOINT + 173 Global Const $CURLOPT_PASSWORD = $CURLOPTTYPE_OBJECTPOINT + 174 Global Const $CURLOPT_PROXYUSERNAME = $CURLOPTTYPE_OBJECTPOINT + 175 Global Const $CURLOPT_PROXYPASSWORD = $CURLOPTTYPE_OBJECTPOINT + 176 Global Const $CURLOPT_NOPROXY = $CURLOPTTYPE_OBJECTPOINT + 177 Global Const $CURLOPT_TFTP_BLKSIZE = $CURLOPTTYPE_LONG + 178 Global Const $CURLOPT_SOCKS5_GSSAPI_SERVICE = $CURLOPTTYPE_OBJECTPOINT + 179 Global Const $CURLOPT_SOCKS5_GSSAPI_NEC = $CURLOPTTYPE_LONG + 180 Global Const $CURLOPT_PROTOCOLS = $CURLOPTTYPE_LONG + 181 Global Const $CURLOPT_REDIR_PROTOCOLS = $CURLOPTTYPE_LONG + 182 Global Const $CURLOPT_SSH_KNOWNHOSTS = $CURLOPTTYPE_OBJECTPOINT + 183 Global Const $CURLOPT_SSH_KEYFUNCTION = $CURLOPTTYPE_FUNCTIONPOINT + 184 Global Const $CURLOPT_SSH_KEYDATA = $CURLOPTTYPE_OBJECTPOINT + 185 Global Const $CURLOPT_MAIL_FROM = $CURLOPTTYPE_OBJECTPOINT + 186 Global Const $CURLOPT_MAIL_RCPT = $CURLOPTTYPE_OBJECTPOINT + 187 Global Const $CURLOPT_FTP_USE_PRET = $CURLOPTTYPE_LONG + 188 Global Const $CURLOPT_RTSP_REQUEST = $CURLOPTTYPE_LONG + 189 Global Const $CURLOPT_RTSP_SESSION_ID = $CURLOPTTYPE_OBJECTPOINT + 190 Global Const $CURLOPT_RTSP_STREAM_URI = $CURLOPTTYPE_OBJECTPOINT + 191 Global Const $CURLOPT_RTSP_TRANSPORT = $CURLOPTTYPE_OBJECTPOINT + 192 Global Const $CURLOPT_RTSP_CLIENT_CSEQ = $CURLOPTTYPE_LONG + 193 Global Const $CURLOPT_RTSP_SERVER_CSEQ = $CURLOPTTYPE_LONG + 194 Global Const $CURLOPT_INTERLEAVEDATA = $CURLOPTTYPE_OBJECTPOINT + 195 Global Const $CURLOPT_INTERLEAVEFUNCTION = $CURLOPTTYPE_FUNCTIONPOINT + 196 Global Const $CURLOPT_WILDCARDMATCH = $CURLOPTTYPE_LONG + 197 Global Const $CURLOPT_CHUNK_BGN_FUNCTION = $CURLOPTTYPE_FUNCTIONPOINT + 198 Global Const $CURLOPT_CHUNK_END_FUNCTION = $CURLOPTTYPE_FUNCTIONPOINT + 199 Global Const $CURLOPT_FNMATCH_FUNCTION = $CURLOPTTYPE_FUNCTIONPOINT + 200 Global Const $CURLOPT_CHUNK_DATA = $CURLOPTTYPE_OBJECTPOINT + 201 Global Const $CURLOPT_FNMATCH_DATA = $CURLOPTTYPE_OBJECTPOINT + 202 Global Const $CURLOPT_RESOLVE = $CURLOPTTYPE_OBJECTPOINT + 203 Global Const $CURLOPT_TLSAUTH_USERNAME = $CURLOPTTYPE_OBJECTPOINT + 204 Global Const $CURLOPT_TLSAUTH_PASSWORD = $CURLOPTTYPE_OBJECTPOINT + 205 Global Const $CURLOPT_TLSAUTH_TYPE = $CURLOPTTYPE_OBJECTPOINT + 206 Global Const $CURLOPT_TRANSFER_ENCODING = $CURLOPTTYPE_LONG + 207 Global Const $CURLOPT_CLOSESOCKETFUNCTION = $CURLOPTTYPE_FUNCTIONPOINT + 208 Global Const $CURLOPT_CLOSESOCKETDATA = $CURLOPTTYPE_OBJECTPOINT + 209 Global Const $CURLOPT_GSSAPI_DELEGATION = $CURLOPTTYPE_LONG + 210 Global Const $CURLOPT_DNS_SERVERS = $CURLOPTTYPE_OBJECTPOINT + 211 Global Const $CURLOPT_ACCEPTTIMEOUT_MS = $CURLOPTTYPE_LONG + 212 Global Const $CURLOPT_TCP_KEEPALIVE = $CURLOPTTYPE_LONG + 213 Global Const $CURLOPT_TCP_KEEPIDLE = $CURLOPTTYPE_LONG + 214 Global Const $CURLOPT_TCP_KEEPINTVL = $CURLOPTTYPE_LONG + 215 Global Const $CURLOPT_SSL_OPTIONS = $CURLOPTTYPE_LONG + 216 Global Const $CURLOPT_MAIL_AUTH = $CURLOPTTYPE_OBJECTPOINT + 217 ; some convenient "aliases" that follow the name scheme better Global Const $CURLOPT_WRITEDATA = $CURLOPT_FILE Global Const $CURLOPT_READDATA = $CURLOPT_INFILE Global Const $CURLOPT_HEADERDATA = $CURLOPT_WRITEHEADER Global Const $CURLOPT_RTSPHEADER = $CURLOPT_HTTPHEADER ; for use with _curl_global_init() Global Const $CURL_GLOBAL_SSL = BitShift(1, 0) Global Const $CURL_GLOBAL_WIN32 = BitShift(1, -1) Global Const $CURL_GLOBAL_ALL = BitOR($CURL_GLOBAL_SSL, $CURL_GLOBAL_WIN32) Global Const $CURL_GLOBAL_NOTHING = 0 Global Const $CURL_GLOBAL_DEFAULT = $CURL_GLOBAL_ALL Global Const $CURLINFO_STRING = 0x100000 Global Const $CURLINFO_LONG = 0x200000 Global Const $CURLINFO_DOUBLE = 0x300000 Global Const $CURLINFO_SLIST = 0x400000 Global Const $CURLINFO_MASK = 0x0fffff Global Const $CURLINFO_TYPEMASK = 0xf00000 Global Const $CURLINFO_EFFECTIVE_URL = $CURLINFO_STRING + 1 Global Const $CURLINFO_RESPONSE_CODE = $CURLINFO_LONG + 2 Global Const $CURLINFO_TOTAL_TIME = $CURLINFO_DOUBLE + 3 Global Const $CURLINFO_NAMELOOKUP_TIME = $CURLINFO_DOUBLE + 4 Global Const $CURLINFO_CONNECT_TIME = $CURLINFO_DOUBLE + 5 Global Const $CURLINFO_PRETRANSFER_TIME = $CURLINFO_DOUBLE + 6 Global Const $CURLINFO_SIZE_UPLOAD = $CURLINFO_DOUBLE + 7 Global Const $CURLINFO_SIZE_DOWNLOAD = $CURLINFO_DOUBLE + 8 Global Const $CURLINFO_SPEED_DOWNLOAD = $CURLINFO_DOUBLE + 9 Global Const $CURLINFO_SPEED_UPLOAD = $CURLINFO_DOUBLE + 10 Global Const $CURLINFO_HEADER_SIZE = $CURLINFO_LONG + 11 Global Const $CURLINFO_REQUEST_SIZE = $CURLINFO_LONG + 12 Global Const $CURLINFO_SSL_VERIFYRESULT = $CURLINFO_LONG + 13 Global Const $CURLINFO_FILETIME = $CURLINFO_LONG + 14 Global Const $CURLINFO_CONTENT_LENGTH_DOWNLOAD = $CURLINFO_DOUBLE + 15 Global Const $CURLINFO_CONTENT_LENGTH_UPLOAD = $CURLINFO_DOUBLE + 16 Global Const $CURLINFO_STARTTRANSFER_TIME = $CURLINFO_DOUBLE + 17 Global Const $CURLINFO_CONTENT_TYPE = $CURLINFO_STRING + 18 Global Const $CURLINFO_REDIRECT_TIME = $CURLINFO_DOUBLE + 19 Global Const $CURLINFO_REDIRECT_COUNT = $CURLINFO_LONG + 20 Global Const $CURLINFO_PRIVATE = $CURLINFO_STRING + 21 Global Const $CURLINFO_HTTP_CONNECTCODE = $CURLINFO_LONG + 22 Global Const $CURLINFO_HTTPAUTH_AVAIL = $CURLINFO_LONG + 23 Global Const $CURLINFO_PROXYAUTH_AVAIL = $CURLINFO_LONG + 24 Global Const $CURLINFO_OS_ERRNO = $CURLINFO_LONG + 25 Global Const $CURLINFO_NUM_CONNECTS = $CURLINFO_LONG + 26 Global Const $CURLINFO_SSL_ENGINES = $CURLINFO_SLIST + 27 Global Const $CURLINFO_COOKIELIST = $CURLINFO_SLIST + 28 Global Const $CURLINFO_LASTSOCKET = $CURLINFO_LONG + 29 Global Const $CURLINFO_FTP_ENTRY_PATH = $CURLINFO_STRING + 30 Global Const $CURLINFO_REDIRECT_URL = $CURLINFO_STRING + 31 Global Const $CURLINFO_PRIMARY_IP = $CURLINFO_STRING + 32 Global Const $CURLINFO_APPCONNECT_TIME = $CURLINFO_DOUBLE + 33 Global Const $CURLINFO_CERTINFO = $CURLINFO_SLIST + 34 Global Const $CURLINFO_CONDITION_UNMET = $CURLINFO_LONG + 35 Global Const $CURLINFO_RTSP_SESSION_ID = $CURLINFO_STRING + 36 Global Const $CURLINFO_RTSP_CLIENT_CSEQ = $CURLINFO_LONG + 37 Global Const $CURLINFO_RTSP_SERVER_CSEQ = $CURLINFO_LONG + 38 Global Const $CURLINFO_RTSP_CSEQ_RECV = $CURLINFO_LONG + 39 Global Const $CURLINFO_PRIMARY_PORT = $CURLINFO_LONG + 40 Global Const $CURLINFO_LOCAL_IP = $CURLINFO_STRING + 41 Global Const $CURLINFO_LOCAL_PORT = $CURLINFO_LONG + 42 Global Const $CURLINFO_HTTP_CODE = $CURLINFO_RESPONSE_CODE ; The _curl_easy_pause function pauses or unpauses transfers. Select the new state by setting the bitmask, use the convenience defines below. Global Const $CURLPAUSE_RECV = BitShift(1, 0) Global Const $CURLPAUSE_RECV_CONT = 0 Global Const $CURLPAUSE_SEND = BitShift(1, -2) Global Const $CURLPAUSE_SEND_CONT = 0 Global Const $CURLPAUSE_ALL = BitOR($CURLPAUSE_RECV, $CURLPAUSE_SEND) Global Const $CURLPAUSE_CONT = BitOR($CURLPAUSE_RECV_CONT, $CURLPAUSE_SEND_CONT) Global Const $CURL_WRITEFUNC_PAUSE = 0x10000001 Global Const $CURL_READFUNC_ABORT = 0x10000000 Global Const $CURL_READFUNC_PAUSE = 0x10000001 ; $CURLFORM_[what] constants, to be used with _curl_formadd() Global Const $CURLFORM_COPYNAME = 1 Global Const $CURLFORM_PTRNAME = 2 Global Const $CURLFORM_NAMELENGTH = 3 Global Const $CURLFORM_COPYCONTENTS = 4 Global Const $CURLFORM_PTRCONTENTS = 5 Global Const $CURLFORM_CONTENTSLENGTH = 6 Global Const $CURLFORM_FILECONTENT = 7 Global Const $CURLFORM_ARRAY = 8 Global Const $CURLFORM_OBSOLETE = 9 Global Const $CURLFORM_FILE = 10 Global Const $CURLFORM_BUFFER = 11 Global Const $CURLFORM_BUFFERPTR = 12 Global Const $CURLFORM_BUFFERLENGTH = 13 Global Const $CURLFORM_CONTENTTYPE = 14 Global Const $CURLFORM_CONTENTHEADER = 15 Global Const $CURLFORM_FILENAME = 16 Global Const $CURLFORM_END = 17 Global Const $CURLFORM_OBSOLETE2 = 18 Global Const $CURLFORM_STREAM = 19 ; return codes for _curl_formadd() Global Const $CURL_FORMADD_OK = 0 Global Const $CURL_FORMADD_MEMORY = 1 Global Const $CURL_FORMADD_OPTION_TWICE = 2 Global Const $CURL_FORMADD_NULL = 3 Global Const $CURL_FORMADD_UNKNOWN_OPTION = 4 Global Const $CURL_FORMADD_INCOMPLETE = 5 Global Const $CURL_FORMADD_ILLEGAL_ARRAY = 6 Global Const $CURL_FORMADD_DISABLED = 7 ; CURLversion Global Const $CURLVERSION_FIRST = 0 Global Const $CURLVERSION_SECOND = 1 Global Const $CURLVERSION_THIRD = 2 Global Const $CURLVERSION_FOURTH = 3 Global Const $CURLVERSION_NOW = $CURLVERSION_FOURTH Global Const $CURL_VERSION_IPV6 = BitShift(1, 0) Global Const $CURL_VERSION_KERBEROS4 = BitShift(1, -1) Global Const $CURL_VERSION_SSL = BitShift(1, -2) Global Const $CURL_VERSION_LIBZ = BitShift(1, -3) Global Const $CURL_VERSION_NTLM = BitShift(1, -4) Global Const $CURL_VERSION_GSSNEGOTIATE = BitShift(1, -5) Global Const $CURL_VERSION_DEBUG = BitShift(1, -6) Global Const $CURL_VERSION_ASYNCHDNS = BitShift(1, -7) Global Const $CURL_VERSION_SPNEGO = BitShift(1, -8) Global Const $CURL_VERSION_LARGEFILE = BitShift(1, -9) Global Const $CURL_VERSION_IDN = BitShift(1, -10) Global Const $CURL_VERSION_SSPI = BitShift(1, -11) Global Const $CURL_VERSION_CONV = BitShift(1, -12) Global Const $CURL_VERSION_CURLDEBUG = BitShift(1, -13) Global Const $CURL_VERSION_TLSAUTH_SRP = BitShift(1, -14) Global Const $CURL_VERSION_NTLM_WB = BitShift(1, -15) libcURL.au3 #include-once #include <libcURLConstants.au3> ; #INDEX# ======================================================================================================================= ; Title .........: libcURL UDF version 1.0 ; AutoIt Version : 3.3.6.1 + ; Language ......: English ; Description ...: URL transfer functions etc., built on 04/06/2012 05:11:23 GMT, uses libcurl, v7.25.0+, the multiprotocol file transfer library ; Author(s) .....: smartee ; Dll ...........: libcurl.dll ; =============================================================================================================================== ; #VARIABLES# =================================================================================================================== Global $g_hDll_libcurl = -1 ; =============================================================================================================================== ; #CURRENT# ===================================================================================================================== ;_curl_easy_escape ;_curl_easy_init ;_curl_easy_cleanup ;_curl_easy_duphandle ;_curl_easy_getinfo ;_curl_easy_pause ;_curl_easy_perform ;_curl_easy_recv ;_curl_easy_reset ;_curl_easy_send ;_curl_easy_setopt ;_curl_easy_strerror ;_curl_easy_unescape ;_curl_formadd ;_curl_formfree ;_curl_free ;_curl_getdate ;_curl_global_cleanup ;_curl_global_init ;_curl_global_init_mem ;_curl_slist_append ;_curl_slist_free_all ;_curl_version ;_curl_version_info ; =============================================================================================================================== ; #INTERNAL_USE_ONLY# =========================================================================================================== ;__cURL_DllOpen ;__cURL_DllClose ; =============================================================================================================================== ; #FUNCTION# ==================================================================================================================== ; Name...........: _curl_easy_escape ; Description ...: URL encodes the given string ; Syntax.........: _curl_easy_escape($curl, $url, $length) ; Parameters ....: $curl - A handle (often referred to as an "easy handle"), which you use as input to the easy interface functions you use. Use _curl_easy_init() to get the handle. ; $url - String to be URL encoded. ; $length - Length of the string. If the length argument is set to 0 (zero), _curl_easy_escape() uses strlen() on the input url to find out the size. ; |0 - Calculate length. ; Return values .: Success - The URL encoded string. ; Failure - An empty string, "" ; Author ........: smartee ; Modified.......: ; Remarks .......: ; Related .......: None. ; Link ..........: <a target="_blank" href="http://curl.haxx.se/libcurl/c/curl_easy_escape.html">http://curl.haxx.se/libcurl/c/curl_easy_escape.html</a> ; Example .......: Yes ; =============================================================================================================================== Func _curl_easy_escape($curl, $url, $length) If $g_hDll_libcurl == -1 Then Return SetError(1, @extended, "") Local $aRes = DllCall($g_hDll_libcurl, "str:cdecl", "curl_easy_escape", "ptr", $curl, "str", $url, "int", $length) If @error Then Return SetError(2, @extended, "") Return $aRes[0] EndFunc ;==>_curl_easy_escape ; #FUNCTION# ==================================================================================================================== ; Name ..........: _curl_easy_init ; Description ...: Start a libcurl easy session ; Syntax ........: _curl_easy_init() ; Parameters ....: None. ; Return values .: Success - A handle (often referred to as an "easy handle"), which you use as input to the easy interface functions you use. ; Failure - -1, Sets @Error: ; |1 - DLL could not be opened. ; |2 - DllCall failed. ; Author ........: smartee ; Modified ......: ; Remarks .......: ; Related .......: _curl_easy_cleanup, _curl_global_init, _curl_easy_reset ; Link ..........: <a target="_blank" href="http://curl.haxx.se/libcurl/c/curl_easy_init.html">http://curl.haxx.se/libcurl/c/curl_easy_init.html</a> ; Example .......: Yes ; =============================================================================================================================== Func _curl_easy_init() If $g_hDll_libcurl == -1 Then __cURL_DllOpen() If $g_hDll_libcurl == -1 Then Return SetError(1, @extended, -1) Local $aRes = DllCall($g_hDll_libcurl, "ptr:cdecl", "curl_easy_init") If @error Then Return SetError(2, @extended, -1) Return $aRes[0] EndFunc ;==>_curl_easy_init ; #FUNCTION# ==================================================================================================================== ; Name ..........: _curl_easy_cleanup ; Description ...: End a libcurl easy session ; Syntax ........: _curl_easy_cleanup($handle) ; Parameters ....: $handle - A handle (often referred to as an "easy handle"), which you use as input to the easy interface functions you use. Use _curl_easy_init() to get the handle. ; Return values .: Success - 1 ; Failure - 0, Sets @Error: ; |1 - DLL could not be opened. ; |2 - DllCall failed. ; Author ........: smartee ; Modified ......: ; Remarks .......: ; Related .......: _curl_easy_init ; Link ..........: <a target="_blank" href="http://curl.haxx.se/libcurl/c/curl_easy_cleanup.html">http://curl.haxx.se/libcurl/c/curl_easy_cleanup.html</a> ; Example .......: Yes ; =============================================================================================================================== Func _curl_easy_cleanup($handle) If $g_hDll_libcurl == -1 Then Return SetError(1, @extended, 0) DllCall($g_hDll_libcurl, "none:cdecl", "curl_easy_cleanup", "ptr", $handle) If @error Then Return SetError(2, @extended, 0) Return 1 EndFunc ;==>_curl_easy_cleanup ; #FUNCTION# ==================================================================================================================== ; Name ..........: _curl_easy_duphandle ; Description ...: Clone a libcurl session handle ; Syntax ........: _curl_easy_duphandle($handle) ; Parameters ....: $handle - A handle (often referred to as an "easy handle"), which you use as input to the easy interface functions you use. Use _curl_easy_init() to get the handle. ; Return values .: Success - A handle (often referred to as an "easy handle"), which you use as input to the easy interface functions you use. ; Failure - -1, Sets @Error: ; |1 - DLL could not be opened. ; |2 - DllCall failed. ; Author ........: smartee ; Modified ......: ; Remarks .......: ; Related .......: _curl_easy_init, _curl_easy_cleanup, _curl_global_init ; Link ..........: <a target="_blank" href="http://curl.haxx.se/libcurl/c/curl_easy_duphandle.html">http://curl.haxx.se/libcurl/c/curl_easy_duphandle.html</a> ; Example .......: No ; =============================================================================================================================== Func _curl_easy_duphandle($handle) If $g_hDll_libcurl == -1 Then Return SetError(1, @extended, -1) Local $aRes = DllCall($g_hDll_libcurl, "ptr:cdecl", "curl_easy_duphandle", "ptr", $handle) If @error Then Return SetError(2, @extended, -1) Return $aRes[0] EndFunc ;==>_curl_easy_duphandle ; #FUNCTION# ==================================================================================================================== ; Name ..........: _curl_easy_getinfo ; Description ...: Extract information from a curl handle ; Syntax ........: _curl_easy_getinfo($handle, $option, Byref $parameter) ; Parameters ....: $handle - A handle (often referred to as an "easy handle"), which you use as input to the easy interface functions you use. Use _curl_easy_init() to get the handle. ; $option - A $CURLINFO_* value. ; $parameter - A variable to be filled in accordingly that can be relied upon only if the function returns $CURLE_OK. ; Return values .: Success - $CURLE_OK or an appropriate $CURLE_* error code will be returned. ; Failure - -1, Sets @Error: ; |1 - DLL could not be opened. ; |2 - DllCall failed. ; Author ........: smartee ; Modified ......: ; Remarks .......: ; Related .......: _curl_easy_setopt ; Link ..........: <a target="_blank" href="http://curl.haxx.se/libcurl/c/curl_easy_getinfo.html">http://curl.haxx.se/libcurl/c/curl_easy_getinfo.html</a> ; Example .......: Yes ; =============================================================================================================================== Func _curl_easy_getinfo($handle, $option, ByRef $parameter) If $g_hDll_libcurl == -1 Then Return SetError(1, @extended, -1) Local $asTypes[4] = ["ptr", "long", "double", "ptr"] Local $iParamType = Int($option / 0x100000) - 1 Local $tCURLSTRUCT_INFO = DllStructCreate($asTypes[$iParamType]) Local $aRes = DllCall($g_hDll_libcurl, "int:cdecl", "curl_easy_getinfo", "ptr", $handle, "int", $option, "ptr", DllStructGetPtr($tCURLSTRUCT_INFO)) If @error Then Return SetError(2, @extended, -1) Switch $iParamType Case 0 Local $tCURLSTRUCT_INFOBUFFER = DllStructCreate("char[256]", DllStructGetData($tCURLSTRUCT_INFO, 1)) $parameter = DllStructGetData($tCURLSTRUCT_INFOBUFFER, 1) Case Else $parameter = DllStructGetData($tCURLSTRUCT_INFO, 1) EndSwitch Return $aRes[0] EndFunc ;==>_curl_easy_getinfo ; #FUNCTION# ==================================================================================================================== ; Name ..........: _curl_easy_pause ; Description ...: Pause and unpause a connection ; Syntax ........: _curl_easy_pause($handle, $bitmask) ; Parameters ....: $handle - A handle (often referred to as an "easy handle"), which you use as input to the easy interface functions you use. Use _curl_easy_init() to get the handle. ; $bitmask - A $CURLPAUSE_* value that sets the new state of the connection. ; Return values .: Success - $CURLE_OK or an appropriate $CURLE_* error code will be returned. ; Failure - -1, Sets @Error: ; |1 - DLL could not be opened. ; |2 - DllCall failed. ; Author ........: smartee ; Modified ......: ; Remarks .......: ; Related .......: _curl_easy_cleanup, _curl_easy_reset ; Link ..........: <a target="_blank" href="http://curl.haxx.se/libcurl/c/curl_easy_pause.html">http://curl.haxx.se/libcurl/c/curl_easy_pause.html</a> ; Example .......: No ; =============================================================================================================================== Func _curl_easy_pause($handle, $bitmask) If $g_hDll_libcurl == -1 Then Return SetError(1, @extended, -1) Local $aRes = DllCall($g_hDll_libcurl, "int:cdecl", "curl_easy_pause", "ptr", $handle, "int", $bitmask) If @error Then Return SetError(2, @extended, -1) Return $aRes[0] EndFunc ;==>_curl_easy_pause ; #FUNCTION# ==================================================================================================================== ; Name ..........: _curl_easy_perform ; Description ...: Perform a file transfer ; Syntax ........: _curl_easy_perform($handle) ; Parameters ....: $handle - A handle (often referred to as an "easy handle"), which you use as input to the easy interface functions you use. Use _curl_easy_init() to get the handle. ; Return values .: Success - $CURLE_OK or an appropriate $CURLE_* error code will be returned. ; Failure - -1, Sets @Error: ; |1 - DLL could not be opened. ; |2 - DllCall failed. ; Author ........: smartee ; Modified ......: ; Remarks .......: ; Related .......: _curl_easy_init, _curl_easy_setopt ; Link ..........: <a target="_blank" href="http://curl.haxx.se/libcurl/c/curl_easy_perform.html">http://curl.haxx.se/libcurl/c/curl_easy_perform.html</a> ; Example .......: Yes ; =============================================================================================================================== Func _curl_easy_perform($handle) If $g_hDll_libcurl == -1 Then Return SetError(1, @extended, -1) Local $aRes = DllCall($g_hDll_libcurl, "int:cdecl", "curl_easy_perform", "ptr", $handle) If @error Then Return SetError(2, @extended, -1) Return $aRes[0] EndFunc ;==>_curl_easy_perform ; #FUNCTION# ==================================================================================================================== ; Name ..........: _curl_easy_recv ; Description ...: Receives raw data on an "easy" connection ; Syntax ........: _curl_easy_recv($handle, $buffer, $buflen, $n) ; Parameters ....: $handle - A handle (often referred to as an "easy handle"), which you use as input to the easy interface functions you use. Use _curl_easy_init() to get the handle. ; $buffer - A pointer to your buffer that will get the received data. ; $buflen - The maximum amount of data you can get in that buffer. ; $n - A pointer to a variable that will receive the number of received bytes. ; Return values .: Success - $CURLE_OK or an appropriate $CURLE_* error code will be returned. ; Failure - -1, Sets @Error: ; |1 - DLL could not be opened. ; |2 - DllCall failed. ; Author ........: smartee ; Modified ......: ; Remarks .......: ; Related .......: _curl_easy_setopt, _curl_easy_perform ; Link ..........: <a target="_blank" href="http://curl.haxx.se/libcurl/c/curl_easy_recv.html">http://curl.haxx.se/libcurl/c/curl_easy_recv.html</a> ; Example .......: No ; =============================================================================================================================== Func _curl_easy_recv($handle, $buffer, $buflen, $n) If $g_hDll_libcurl == -1 Then Return SetError(1, @extended, -1) Local $aRes = DllCall($g_hDll_libcurl, "int:cdecl", "curl_easy_recv", "ptr", $handle, "ptr", $buffer, "uint", $buflen, "ptr", $n) If @error Then Return SetError(2, @extended, -1) Return $aRes[0] EndFunc ;==>_curl_easy_recv ; #FUNCTION# ==================================================================================================================== ; Name ..........: _curl_easy_reset ; Description ...: Reset all options of a libcurl session handle ; Syntax ........: _curl_easy_reset($handle) ; Parameters ....: $handle - A handle (often referred to as an "easy handle"), which you use as input to the easy interface functions you use. Use _curl_easy_init() to get the handle. ; Return values .: Success - 1 ; Failure - 0, Sets @Error: ; |1 - DLL could not be opened. ; |2 - DllCall failed. ; Author ........: smartee ; Modified ......: ; Remarks .......: ; Related .......: _curl_easy_init, _curl_easy_cleanup, _curl_easy_setopt ; Link ..........: <a target="_blank" href="http://curl.haxx.se/libcurl/c/curl_easy_reset.html">http://curl.haxx.se/libcurl/c/curl_easy_reset.html</a> ; Example .......: No ; =============================================================================================================================== Func _curl_easy_reset($handle) If $g_hDll_libcurl == -1 Then Return SetError(1, @extended, 0) DllCall($g_hDll_libcurl, "none:cdecl", "curl_easy_reset", "ptr", $handle) If @error Then Return SetError(2, @extended, 0) Return 1 EndFunc ;==>_curl_easy_reset ; #FUNCTION# ==================================================================================================================== ; Name ..........: _curl_easy_send ; Description ...: Sends raw data over an "easy" connection ; Syntax ........: _curl_easy_send($handle, $buffer, $buflen, $n) ; Parameters ....: $handle - A handle (often referred to as an "easy handle"), which you use as input to the easy interface functions you use. Use _curl_easy_init() to get the handle. ; $buffer - A pointer to your buffer with data to be sent. ; $buflen - Length of buffer. ; $n - A pointer to a variable that will receive the number of sent bytes. ; Return values .: Success - $CURLE_OK or an appropriate $CURLE_* error code will be returned. ; Failure - -1, Sets @Error: ; |1 - DLL could not be opened. ; |2 - DllCall failed. ; Author ........: smartee ; Modified ......: ; Remarks .......: ; Related .......: _curl_easy_setopt, _curl_easy_perform, _curl_easy_getinfo ; Link ..........: <a target="_blank" href="http://curl.haxx.se/libcurl/c/curl_easy_send.html">http://curl.haxx.se/libcurl/c/curl_easy_send.html</a> ; Example .......: No ; =============================================================================================================================== Func _curl_easy_send($handle, $buffer, $buflen, $n) If $g_hDll_libcurl == -1 Then Return SetError(1, @extended, -1) Local $aRes = DllCall($g_hDll_libcurl, "int:cdecl", "curl_easy_send", "ptr", $handle, "ptr", $buffer, "uint", $buflen, "ptr", $n) If @error Then Return SetError(2, @extended, -1) Return $aRes[0] EndFunc ;==>_curl_easy_send ; #FUNCTION# ==================================================================================================================== ; Name ..........: _curl_easy_setopt ; Description ...: Set options for a curl easy handle ; Syntax ........: _curl_easy_setopt($handle, $option, $parameter) ; Parameters ....: $handle - A handle (often referred to as an "easy handle"), which you use as input to the easy interface functions you use. Use _curl_easy_init() to get the handle. ; $option - A $CURLOPT_* value. ; $parameter - A long, a function pointer, an object pointer or a large integer, depending on what the specific option expects. ; Return values .: Success - $CURLE_OK or an appropriate $CURLE_* error code will be returned. ; Failure - -1, Sets @Error: ; |1 - DLL could not be opened. ; |2 - DllCall failed. ; Author ........: smartee ; Modified ......: ; Remarks .......: ; Related .......: _curl_easy_init, _curl_easy_cleanup, _curl_easy_reset ; Link ..........: <a target="_blank" href="http://curl.haxx.se/libcurl/c/curl_easy_setopt.html">http://curl.haxx.se/libcurl/c/curl_easy_setopt.html</a> ; Example .......: Yes ; =============================================================================================================================== Func _curl_easy_setopt($handle, $option, $parameter) If $g_hDll_libcurl == -1 Then Return SetError(1, @extended, -1) Local $asTypes[4] = ["long", "ptr", "ptr", "int64"] Local $aRes = DllCall($g_hDll_libcurl, "int:cdecl", "curl_easy_setopt", "ptr", $handle, "int", $option, $asTypes[Int($option / 10000)], $parameter) If @error Then Return SetError(2, @extended, -1) Return $aRes[0] EndFunc ;==>_curl_easy_setopt ; #FUNCTION# ==================================================================================================================== ; Name ..........: _curl_easy_strerror ; Description ...: Return string describing error code ; Syntax ........: _curl_easy_strerror($errnum) ; Parameters ....: $errnum - A $CURLE_* error code. ; Return values .: Success - A string describing the error code passed in the argument $errornum. ; Failure - -1, Sets @Error: ; |1 - DLL could not be opened. ; |2 - DllCall failed. ; Author ........: smartee ; Modified ......: ; Remarks .......: ; Related .......: None. ; Link ..........: <a target="_blank" href="http://curl.haxx.se/libcurl/c/curl_easy_strerror.html">http://curl.haxx.se/libcurl/c/curl_easy_strerror.html</a> ; Example .......: Yes ; =============================================================================================================================== Func _curl_easy_strerror($errnum) If $g_hDll_libcurl == -1 Then Return SetError(1, @extended, "") Local $aRes = DllCall($g_hDll_libcurl, "str:cdecl", "curl_easy_strerror", "int", $errnum) If @error Then Return SetError(2, @extended, "") Return $aRes[0] EndFunc ;==>_curl_easy_strerror ; #FUNCTION# ==================================================================================================================== ; Name ..........: _curl_easy_unescape ; Description ...: URL decodes the given string ; Syntax ........: _curl_easy_unescape($curl, $url, $inlength, $outlength) ; Parameters ....: $curl - A handle (often referred to as an "easy handle"), which you use as input to the easy interface functions you use. Use _curl_easy_init() to get the handle. ; $url - String to be decoded. ; $inlength - Length of string, if set to 0 (zero), _curl_easy_unescape() will use strlen() on the input url string to find out the size. ; $outlength - If outlength is non-NULL, the function will write the length of the returned string in the integer it points to. This allows an escaped string containing %00 to still get used properly after unescaping. ; Return values .: Success - A pointer to a zero terminated string or NULL. ; Failure - An empty string, "", Sets @Error: ; |1 - DLL could not be opened. ; |2 - DllCall failed. ; Author ........: smartee ; Modified ......: ; Remarks .......: ; Related .......: _curl_easy_escape, _curl_free ; Link ..........: <a target="_blank" href="http://curl.haxx.se/libcurl/c/curl_easy_unescape.html">http://curl.haxx.se/libcurl/c/curl_easy_unescape.html</a> ; Example .......: Yes ; =============================================================================================================================== Func _curl_easy_unescape($curl, $url, $inlength, $outlength) If $g_hDll_libcurl == -1 Then Return SetError(1, @extended, "") Local $aRes = DllCall($g_hDll_libcurl, "str:cdecl", "curl_easy_unescape", "ptr", $curl, "str", $url, "int", $inlength, "ptr", $outlength) If @error Then Return SetError(2, @extended, "") Return $aRes[0] EndFunc ;==>_curl_easy_unescape ; #FUNCTION# ==================================================================================================================== ; Name ..........: _curl_formadd ; Description ...: Add a section to a multipart/formdata HTTP POST ; Syntax ........: _curl_formadd($firstitem, $lastitem, $option, $parameter, $option2, $parameter2[, $option3 = $CURLFORM_END]) ; Parameters ....: $firstitem - A pointer to the firstitem. ; $lastitem - A pointer to the lastitem. ; $option - A $CURLFORM_* value. ; $parameter - A string value depending on $option. ; $option2 - A $CURLFORM_* value. ; $parameter2 - A string value depending on $option. ; $option3 - [optional] A $CURLFORM_* value. Default is $CURLFORM_END. ; Return values .: Success - $CURL_FORMADD_OK or a $CURL_FORMADD_* code. ; Failure - -1, Sets @Error: ; |1 - DLL could not be opened. ; |2 - DllCall failed. ; Author ........: smartee ; Modified ......: ; Remarks .......: ; Related .......: _curl_easy_setopt, _curl_formfree ; Link ..........: <a target="_blank" href="http://curl.haxx.se/libcurl/c/curl_formadd.html">http://curl.haxx.se/libcurl/c/curl_formadd.html</a> ; Example .......: Yes ; =============================================================================================================================== Func _curl_formadd($firstitem, $lastitem, $option, $parameter, $option2, $parameter2, $option3 = $CURLFORM_END) If $g_hDll_libcurl == -1 Then __cURL_DllOpen() If $g_hDll_libcurl == -1 Then Return SetError(1, @extended, -1) Local $aRes = DllCall($g_hDll_libcurl, "int:cdecl", "curl_formadd", "ptr", $firstitem, "ptr", $lastitem, "int", $option, "str", $parameter, "int", $option2, "str", $parameter2, "int", $option3) If @error Then Return SetError(2, @extended, -1) Return $aRes[0] EndFunc ;==>_curl_formadd ; #FUNCTION# ==================================================================================================================== ; Name ..........: _curl_formfree ; Description ...: Free a previously build multipart/formdata HTTP POST chain ; Syntax ........: _curl_formfree($form) ; Parameters ....: $form - A pointer as returned from a previous call to _curl_formadd() and may be NULL. ; Return values .: Success - 1 ; Failure - 0, Sets @Error: ; |1 - DLL could not be opened. ; |2 - DllCall failed. ; Author ........: smartee ; Modified ......: ; Remarks .......: ; Related .......: _curl_formadd ; Link ..........: <a target="_blank" href="http://curl.haxx.se/libcurl/c/curl_formfree.html">http://curl.haxx.se/libcurl/c/curl_formfree.html</a> ; Example .......: Yes ; =============================================================================================================================== Func _curl_formfree($form) If $g_hDll_libcurl == -1 Then Return SetError(1, @extended, 0) DllCall($g_hDll_libcurl, "none:cdecl", "curl_formfree", "ptr", $form) If @error Then Return SetError(2, @extended, 0) Return 1 EndFunc ;==>_curl_formfree ; #FUNCTION# ==================================================================================================================== ; Name ..........: _curl_free ; Description ...: Reclaim memory that has been obtained through a libcurl call ; Syntax ........: _curl_free($ptr) ; Parameters ....: $ptr - A pointer value. ; Return values .: Success - 1 ; Failure - 0, Sets @Error: ; |1 - DLL could not be opened. ; |2 - DllCall failed. ; Author ........: smartee ; Modified ......: ; Remarks .......: ; Related .......: None. ; Link ..........: <a target="_blank" href="http://curl.haxx.se/libcurl/c/curl_free.html">http://curl.haxx.se/libcurl/c/curl_free.html</a> ; Example .......: No ; =============================================================================================================================== Func _curl_free($ptr) If $g_hDll_libcurl == -1 Then Return SetError(1, @extended, 0) DllCall($g_hDll_libcurl, "none:cdecl", "curl_free", "str", $ptr) If @error Then Return SetError(2, @extended, 0) Return 1 EndFunc ;==>_curl_free ; #FUNCTION# ==================================================================================================================== ; Name ..........: _curl_getdate ; Description ...: Convert a date string to number of seconds since January 1, 1970 ; Syntax ........: _curl_getdate($datestring, $now) ; Parameters ....: $datestring - A string containing several items separated by whitespace. The order of the items is immaterial. ; $now - Not used, pass a NULL there. ; Return values .: Success - The number of seconds as described. ; Failure - -1, Sets @Error: ; |1 - DLL could not be opened. ; |2 - DllCall failed. ; |3 - Failed to parse the date string. ; Author ........: smartee ; Modified ......: ; Remarks .......: This parser was written to handle date formats specified in RFC 822 (including the update in RFC 1123) using time zone name or time zone delta and RFC 850 (obsoleted by RFC 1036) and ANSI C's asctime() format. ; These formats are the only ones RFC 2616 says HTTP applications may use. ; Related .......: None. ; Link ..........: <a target="_blank" href="http://curl.haxx.se/libcurl/c/curl_getdate.html">http://curl.haxx.se/libcurl/c/curl_getdate.html</a> ; Example .......: Yes ; =============================================================================================================================== Func _curl_getdate($datestring, $now) If $g_hDll_libcurl == -1 Then __cURL_DllOpen() If $g_hDll_libcurl == -1 Then Return SetError(1, @extended, -1) Local $aRes = DllCall($g_hDll_libcurl, "uint:cdecl", "curl_getdate", "str", $datestring, "ptr", $now) If @error Then Return SetError(2, @extended, -1) If $aRes[0] = -1 Then Return SetError(3, @extended, -1) Return $aRes[0] EndFunc ;==>_curl_getdate ; #FUNCTION# ==================================================================================================================== ; Name ..........: _curl_global_cleanup ; Description ...: Global libcurl cleanup ; Syntax ........: _curl_global_cleanup() ; Parameters ....: None. ; Return values .: Success - 1 ; Failure - 0, Sets @Error: ; |1 - DLL could not be opened. ; |2 - DllCall failed. ; Author ........: smartee ; Modified ......: ; Remarks .......: This function releases resources acquired by _curl_global_init(). ; Related .......: _curl_global_init ; Link ..........: <a target="_blank" href="http://curl.haxx.se/libcurl/c/curl_global_cleanup.html">http://curl.haxx.se/libcurl/c/curl_global_cleanup.html</a> ; Example .......: Yes ; =============================================================================================================================== Func _curl_global_cleanup() If $g_hDll_libcurl == -1 Then Return SetError(1, @extended, 0) DllCall($g_hDll_libcurl, "none:cdecl", "curl_global_cleanup") If @error Then Return SetError(2, @extended, 0) Return 1 EndFunc ;==>_curl_global_cleanup ; #FUNCTION# ==================================================================================================================== ; Name ..........: _curl_global_init ; Description ...: Global libcurl initialisation ; Syntax ........: _curl_global_init($flags) ; Parameters ....: $flags - A bit pattern that tells libcurl exactly what features to init. (A $CURL_GLOBAL_* value.) ; Return values .: Success - $CURLE_OK or an appropriate $CURLE_* error code will be returned. ; Failure - -1, Sets @Error: ; |1 - DLL could not be opened. ; |2 - DllCall failed. ; Author ........: smartee ; Modified ......: ; Remarks .......: ; Related .......: _curl_global_init_mem ; Link ..........: <a target="_blank" href="http://curl.haxx.se/libcurl/c/curl_global_init.html">http://curl.haxx.se/libcurl/c/curl_global_init.html</a> ; Example .......: Yes ; =============================================================================================================================== Func _curl_global_init($flags) If $g_hDll_libcurl == -1 Then __cURL_DllOpen() If $g_hDll_libcurl == -1 Then Return SetError(1, @extended, -1) Local $aRes = DllCall($g_hDll_libcurl, "int:cdecl", "curl_global_init", "long", $flags) If @error Then Return SetError(2, @extended, -1) Return $aRes[0] EndFunc ;==>_curl_global_init ; #FUNCTION# ==================================================================================================================== ; Name ..........: _curl_global_init_mem ; Description ...: Global libcurl initialisation with memory callbacks ; Syntax ........: _curl_global_init_mem($flags, $m, $f, $r, $s, $c) ; Parameters ....: $flags - A bit pattern that tells libcurl exactly what features to init. (A $CURL_GLOBAL_* value.) ; $m - Callback for malloc, prototype: void *malloc_callback(size_t size); ; $f - Callback for free, prototype: void free_callback(void *ptr); ; $r - Callback for realloc, prototype: void *realloc_callback(void *ptr, size_t size); ; $s - Callback for strdup, prototype: char *strdup_callback(const char *str); ; $c - Callback for malloc, prototype: void *calloc_callback(size_t nmemb, size_t size); ; Return values .: Success - $CURLE_OK or an appropriate $CURLE_* error code will be returned. ; Failure - -1, Sets @Error: ; |1 - DLL could not be opened. ; |2 - DllCall failed. ; Author ........: smartee ; Modified ......: ; Remarks .......: Manipulating these gives considerable powers to the application to severely screw things up for libcurl. Take care! ; Related .......: _curl_global_init, _curl_global_cleanup ; Link ..........: <a target="_blank" href="http://curl.haxx.se/libcurl/c/curl_global_init_mem.html">http://curl.haxx.se/libcurl/c/curl_global_init_mem.html</a> ; Example .......: No ; =============================================================================================================================== Func _curl_global_init_mem($flags, $m, $f, $r, $s, $c) If $g_hDll_libcurl == -1 Then __cURL_DllOpen() If $g_hDll_libcurl == -1 Then Return SetError(1, @extended, -1) Local $aRes = DllCall($g_hDll_libcurl, "int:cdecl", "curl_global_init_mem", "long", $flags, "ptr", $m, "ptr", $f, "ptr", $r, "ptr", $s, "ptr", $c) If @error Then Return SetError(2, @extended, -1) Return $aRes[0] EndFunc ;==>_curl_global_init_mem ; #FUNCTION# ==================================================================================================================== ; Name ..........: _curl_slist_append ; Description ...: Add a string to an slist ; Syntax ........: _curl_slist_append($list, $string) ; Parameters ....: $list - A list pointer. ; $string - A string value. ; Return values .: Success - A new list pointer. ; Failure - A null pointer or -1, Sets @Error: ; |1 - DLL could not be opened. ; |2 - DllCall failed. ; Author ........: smartee ; Modified ......: ; Remarks .......: ; Related .......: _curl_slist_free_all ; Link ..........: <a target="_blank" href="http://curl.haxx.se/libcurl/c/curl_slist_append.html">http://curl.haxx.se/libcurl/c/curl_slist_append.html</a> ; Example .......: Yes ; =============================================================================================================================== Func _curl_slist_append($list, $string) If $g_hDll_libcurl == -1 Then __cURL_DllOpen() If $g_hDll_libcurl == -1 Then Return SetError(1, @extended, -1) Local $aRes = DllCall($g_hDll_libcurl, "ptr:cdecl", "curl_slist_append", "ptr", $list, "str", $string) If @error Then Return SetError(2, @extended, -1) Return $aRes[0] EndFunc ;==>_curl_slist_append ; #FUNCTION# ==================================================================================================================== ; Name ..........: _curl_slist_free_all ; Description ...: Free an entire curl_slist list ; Syntax ........: _curl_slist_free_all($list) ; Parameters ....: $list - A list pointer. ; Return values .: Success - 1 ; Failure - 0, Sets @Error: ; |1 - DLL could not be opened. ; |2 - DllCall failed. ; Author ........: smartee ; Modified ......: ; Remarks .......: ; Related .......: _curl_slist_append ; Link ..........: <a target="_blank" href="http://curl.haxx.se/libcurl/c/curl_slist_free_all.html">http://curl.haxx.se/libcurl/c/curl_slist_free_all.html</a> ; Example .......: Yes ; =============================================================================================================================== Func _curl_slist_free_all($list) If $g_hDll_libcurl == -1 Then Return SetError(1, @extended, 0) DllCall($g_hDll_libcurl, "none:cdecl", "curl_slist_free_all", "ptr", $list) If @error Then Return SetError(2, @extended, 0) Return 1 EndFunc ;==>_curl_slist_free_all ; #FUNCTION# ==================================================================================================================== ; Name ..........: _curl_version ; Description ...: Returns the libcurl version string ; Syntax ........: _curl_version() ; Parameters ....: None. ; Return values .: Success - A pointer to a zero terminated string. ; Failure - -1, Sets @Error: ; |1 - DLL could not be opened. ; |2 - DllCall failed. ; Author ........: smartee ; Modified ......: ; Remarks .......: ; Related .......: _curl_version_info ; Link ..........: <a target="_blank" href="http://curl.haxx.se/libcurl/c/curl_version.html">http://curl.haxx.se/libcurl/c/curl_version.html</a> ; Example .......: No ; =============================================================================================================================== Func _curl_version() If $g_hDll_libcurl == -1 Then __cURL_DllOpen() If $g_hDll_libcurl == -1 Then Return SetError(1, @extended, "") Local $aRes = DllCall($g_hDll_libcurl, "str:cdecl", "curl_version") If @error Then Return SetError(2, @extended, "") Return $aRes[0] EndFunc ;==>_curl_version ; #FUNCTION# ==================================================================================================================== ; Name ..........: _curl_version_info ; Description ...: Returns run-time libcurl version info ; Syntax ........: _curl_version_info($type) ; Parameters ....: $type - The version of this functionality by the time you write your program. ; Return values .: Success - A pointer to a curl_version_info_data struct. ; Failure - -1, Sets @Error: ; |1 - DLL could not be opened. ; |2 - DllCall failed. ; Author ........: smartee ; Modified ......: ; Remarks .......: ; Related .......: _curl_version ; Link ..........: <a target="_blank" href="http://curl.haxx.se/libcurl/c/curl_version_info.html">http://curl.haxx.se/libcurl/c/curl_version_info.html</a> ; Example .......: No ; =============================================================================================================================== Func _curl_version_info($type) If $g_hDll_libcurl == -1 Then __cURL_DllOpen() If $g_hDll_libcurl == -1 Then Return SetError(1, @extended, -1) Local $aRes = DllCall($g_hDll_libcurl, "ptr:cdecl", "curl_version_info", "int", $type) If @error Then Return SetError(2, @extended, -1) Return $aRes[0] EndFunc ;==>_curl_version_info ; #INTERNAL_USE_ONLY# =========================================================================================================== ;__cURL_DllOpen ;__cURL_DllClose ; Name ..........: __cURL_DllOpen ; Description ...: Opens the libcurl DLL for use with this UDF library. ; Syntax ........: __cURL_DllOpen() ; Parameters ....: None. ; Return values .: Success - 1, Sets $g_hDll_libcurl to the DLL's handle. ; Failure - 0, Sets @Error: ; |1 - DLL could not be opened. ; Author ........: smartee ; Modified ......: ; Remarks .......: ; Related .......: __cURL_DllClose ; Link ..........: ; Example .......: No ; =============================================================================================================================== Func __cURL_DllOpen() $g_hDll_libcurl = DllOpen("libcurl.dll") If $g_hDll_libcurl == -1 Then Return SetError(1, @extended, 0) OnAutoItExitRegister("__cURL_DllClose") Return 1 EndFunc ;==>__cURL_DllOpen ; #INTERNAL_USE_ONLY# =========================================================================================================== ;__cURL_DllOpen ;__cURL_DllClose ; Name ..........: __cURL_DllClose ; Description ...: Closes a open handle to the libcurl DLL. ; Syntax ........: __cURL_DllClose() ; Parameters ....: None. ; Return values .: None. ; Author ........: smartee ; Modified ......: ; Remarks .......: ; Related .......: __cURL_DllOpen ; Link ..........: ; Example .......: No ; =============================================================================================================================== Func __cURL_DllClose() If $g_hDll_libcurl <> -1 Then DllClose($g_hDll_libcurl) $g_hDll_libcurl = -1 EndFunc ;==>__cURL_DllClose Example 1: _curl_slist_append.au3 #include <libcURL.au3> _Demo1() Func _Demo1() Local $sURL = "http://www.google.com/search?q=http+headers" Local $hcurl = _curl_easy_init() If ($hcurl) Then ; set referer Local $ptNewList = _curl_slist_append(0, "Referer: http://www.google.com") ; add a custom accept $ptNewList = _curl_slist_append($ptNewList, "Accept: foo") Local $tCURLSTRUCT_URL = DllStructCreate("char[" & StringLen($sURL) + 1 & "]") DllStructSetData($tCURLSTRUCT_URL, 1, $sURL) _curl_easy_setopt($hcurl, $CURLOPT_URL, DllStructGetPtr($tCURLSTRUCT_URL)) _curl_easy_setopt($hcurl, $CURLOPT_VERBOSE, 1) _curl_easy_perform($hcurl) ; redo request with our custom headers: _curl_easy_setopt($hcurl, $CURLOPT_HTTPHEADER, $ptNewList) _curl_easy_perform($hcurl) _curl_slist_free_all($ptNewList) _curl_easy_cleanup($hcurl) EndIf EndFunc ;==>_Demo1 TODO: "multi" interface"share" interfaceDownload: LAST UPDATED: 06-APR-2012 Here's a zipped file with everything you need to get started, (Help-file with examples, calltips.api, userudfs.properties, current libcurl.dll (v7.25.0 & deps) etc.) libcURLUDFv1.0.zip 1.09 MB All feedback is welcome -smartee
-
What's the best way to receive file from a desktop app? app.exe will execute a cmd with "au3file.exe /path/of/the/file.xml" and the au3file.exe will get and delete that. Or else? THE MOST IMPORTANT PART OF THE QUESTION And best way to transfer file to a desktop app? au3file.exe do a $_POST request and the app.exe MUST HAVE a local HTTP server that can receive $_POST, but it looks heavy 'cause the app must have a server such XAMPP. au3file.exe execute a cmd with "app.exe /path/of/the/file.xml" and the app.exe will now get that file and delete. Or else?
-
Like Request for node.js or Requests for python, Request UDF is a powerful and easy-to-use HTTP client for AutoIt. It is based on my Curl.au3 and Json.au3 (not included). The Features: Request target can be a string (single url), an array (urls), an object (single url + options or url array + options), an object array (urls + different options), or a json string (decode to array or object automatically), etc.Easy to setup post data, cookies, agent, refer, timeout, proxy, etc.Easy to setup the default options before a series of requests.Use BinaryToString() to decode the returned data according to content type automatically. Use curl multi interface by default. It means all requests will transfer simultaneously and won't block the GUI event.Use callback function to recieve the data and information for every url before main function finished.Supports https and ftp protocols.Example: #Include "Json.au3" #Include "Curl.au3" #Include "Request.au3" RequestDefault('{refer: "http://www.autoitscript.com", agent: "AutoIt/Request", callback: "MyCallback"}') Local $Data = Request("http://httpbin.org/get") ConsoleWrite($Data & @LF) Request('["http://www.google.com", "http://wikipedia.org"]') Request('{url: "http://www.google.com", agent: "AutoIt/Request"}') Request('{url: ["http://www.google.com", "http://wikipedia.org"], agent: "AutoIt/Request"}') Local $Array[] = ["http://www.google.com", "http://wikipedia.org"] Request($Array) Request("http://httpbin.org/post", "key=Post%20can%20be%20the%20raw%20data") Request("http://httpbin.org/post", '{key: "Post can be a json object string"}') Request('{url: "http://httpbin.org/post", post:{key: "Post can be set as second paramemtr or \"post\" option"}}') Local $Obj Json_Put($Obj, ".key", "Post can be an object") Local $Json = Request("http://httpbin.org/post", $Obj) Func MyCallback($Obj) Local $Data = Json_ObjGet($Obj, "Data") Local $EffectiveUrl = Json_ObjGet($Obj, "EffectiveUrl") ConsoleWrite("Callback: " & $EffectiveUrl & " download size: " & StringLen($Data) & @LF) EndFunc More examples are in the archive. Request.zip
-
I'm using to upload a file to a server. After the upload the server returns a URL to that file. My program needs to give that URL to the user. libcURL is working fine and the upload is successful, and the HTML response needed is output to scite's console. I need the information put into the console to be stored in a variable, though, and I can't figure it out. I think I need to use stdout or stdread to do this. I have used these before when using a run() command but this library is using a dll (and is much cleaner than my previous version which used run commands). How do I record the output buffer of a DLL? (or whatever stdout is called). This attachment is what I'm testing it with, just open "playground.au3" and run it. It should spit a bunch of information to the console. The top listing of variables is all from curl_getdata(), the part with brackets and arrows is from my web server. I need the second part to be put into a variable. PS: The cURL process ID is stored as $__hcurl_process seangriffin's manages to accomplish this, it looks like the key is to use "DllCallbackRegister". I'm trying to plug this in to smartee's UDF but the two UDF's look like completely different languages. I don't think I will be able to figure this out on my own, but I'm going to keep trying. EDIT: You need to move the DLL's to the same folder as playground.au3, and edit "libcURL.au3" and change the #include to quotes instead of brackets. I packed it wrong.
- 2 replies
-
- stdoutread
- libcurl
-
(and 3 more)
Tagged with: