[CCode (cheader_filename = "curl/curl.h")] namespace Curl { [CCode (cname = "CURL_GLOBAL_SSL")] public const long GLOBAL_SSL; [CCode (cname = "CURL_GLOBAL_WIN32")] public const long GLOBAL_WIN32; [CCode (cname = "CURL_GLOBAL_ALL")] public const long GLOBAL_ALL; [CCode (cname = "CURL_GLOBAL_NOTHING")] public const long GLOBAL_NOTHING; [CCode (cname = "CURL_GLOBAL_DEFAULT")] public const int GLOBAL_DEFAULT; public Curl.Code global_init (long flags); public Curl.Code global_init_mem (long flags, Curl.MallocCallback m, Curl.FreeCallback f, Curl.ReallocCallback r, Curl.StrdupCallback s, Curl.CallocCallback c); public static void global_cleanup (); [Compact] [CCode (cname = "CURL", cprefix = "curl_easy_", free_function = "curl_easy_cleanup")] public class EasyHandle { [CCode (cname = "curl_easy_init")] public EasyHandle (); [PrintfFormat] public Curl.Code setopt (Curl.Option option, ...); public Curl.Code perform (); [PrintfFormat] public Curl.Code getinfo (Curl.Info info, ...); public Curl.EasyHandle duphandle (); public void reset (); public Curl.Code recv (void *buffer, size_t buflen, out size_t n); public Curl.Code send (void *buffer, size_t buflen, out size_t n); public string escape (string @string, int length); public string unescape (string @string, int length, out int outlength); [CCode (has_target = false)] public delegate int SocketCallback (Curl.Socket s, int what, void* userp, void *socketp); } [CCode (cname = "CURLcode", cprefix = "CURLE_")] public enum Code { OK, UNSUPPORTED_PROTOCOL, FAILED_INIT, URL_MALFORMAT, COULDNT_RESOLVE_PROXY, COULDNT_RESOLVE_HOST, COULDNT_CONNECT, FTP_WEIRD_SERVER_REPLY, REMOTE_ACCESS_DENIED, FTP_WEIRD_PASS_REPLY, FTP_WEIRD_PASV_REPLY, FTP_WEIRD_227_FORMAT, FTP_CANT_GET_HOST, FTP_COULDNT_SET_TYPE, PARTIAL_FILE, FTP_COULDNT_RETR_FILE, QUOTE_ERROR, HTTP_RETURNED_ERROR, WRITE_ERROR, UPLOAD_FAILED, READ_ERROR, OUT_OF_MEMORY, OPERATION_TIMEDOUT, FTP_PORT_FAILED, FTP_COULDNT_USE_REST, RANGE_ERROR, HTTP_POST_ERROR, SSL_CONNECT_ERROR, BAD_DOWNLOAD_RESUME, FILE_COULDNT_READ_FILE, LDAP_CANNOT_BIND, LDAP_SEARCH_FAILED, FUNCTION_NOT_FOUND, ABORTED_BY_CALLBACK, BAD_FUNCTION_ARGUMENT, INTERFACE_FAILED, TOO_MANY_REDIRECTS, UNKNOWN_TELNET_OPTION, TELNET_OPTION_SYNTAX, PEER_FAILED_VERIFICATION, GOT_NOTHING, SSL_ENGINE_NOTFOUND, SSL_ENGINE_SETFAILED, SEND_ERROR, RECV_ERROR, SSL_CERTPROBLEM, SSL_CIPHER, SSL_CACERT, BAD_CONTENT_ENCODING, LDAP_INVALID_URL, FILESIZE_EXCEEDED, USE_SSL_FAILED, SEND_FAIL_REWIND, SSL_ENGINE_INITFAILED, LOGIN_DENIED, TFTP_NOTFOUND, TFTP_PERM, REMOTE_DISK_FULL, TFTP_ILLEGAL, TFTP_UNKNOWNID, REMOTE_FILE_EXISTS, TFTP_NOSUCHUSER, CONV_FAILED, CONV_REQD, SSL_CACERT_BADFILE, REMOTE_FILE_NOT_FOUND, SSH, SSL_SHUTDOWN_FAILED, AGAIN, SSL_CRL_BADFILE, SSL_ISSUER_ERROR, [CCode (cname = "CURL_LAST")] LAST } [CCode (name = "CURLoption", cprefix = "CURLOPT_")] public enum Option { FILE, URL, PORT, PROXY, USERPWD, PROXYUSERPWD, RANGE, INFILE, WRITEDATA, READDATA, ERRORBUFFER, WRITEFUNCTION, READFUNCTION, TIMEOUT, INFILESIZE, POSTFIELDS, REFERER, FTPPORT, USERAGENT, LOW_SPEED_LIMIT, LOW_SPEED_TIME, RESUME_FROM, COOKIE, HTTPHEADER, HTTPPOST, // struct HTTPPost SSLCERT, KEYPASSWD, CRLF, QUOTE, WRITEHEADER, HEADERDATA, COOKIEFILE, SSLVERSION, TIMECONDITION, TIMEVALUE, CUSTOMREQUEST, STDERR, POSTQUOTE, WRITEINFO, VERBOSE, HEADER, NOPROGRESS, NOBODY, FAILONERROR, UPLOAD, POST, DIRLISTONLY, APPEND, NETRC, FOLLOWLOCATION, TRANSFERTEXT, PUT, PROGRESSFUNCTION, PROGRESSDATA, AUTOREFERER, PROXYPORT, POSTFIELDSIZE, HTTPPROXYTUNNEL, INTERFACE, KRBLEVEL, SSL_VERIFYPEER, CAINFO, MAXREDIRS, FILETIME, TELNETOPTIONS, MAXCONNECTS, CLOSEPOLICY, FRESH_CONNECT, FORBID_REUSE, RANDOM_FILE, EGDSOCKET, CONNECTTIMEOUT, HEADERFUNCTION, HTTPGET, SSL_VERIFYHOST, COOKIEJAR, SSL_CIPHER_LIST, HTTP_VERSION, FTP_USE_EPSV, SSLCERTTYPE, SSLKEY, SSLKEYTYPE, SSLENGINE, SSLENGINE_DEFAULT, DNS_USE_GLOBAL_CACHE, DNS_CACHE_TIMEOUT, PREQUOTE, DEBUGFUNCTION, DEBUGDATA, COOKIESESSION, CAPATH, BUFFERSIZE, NOSIGNAL, SHARE, PROXYTYPE , ENCODING, PRIVATE, HTTP200ALIASES, UNRESTRICTED_AUTH, FTP_USE_EPRT, HTTPAUTH, SSL_CTX_FUNCTION, SSL_CTX_DATA, FTP_CREATE_MISSING_DIRS, PROXYAUTH, FTP_RESPONSE_TIMEOUT, IPRESOLVE, MAXFILESIZE, INFILESIZE_LARGE, RESUME_FROM_LARGE, MAXFILESIZE_LARGE, NETRC_FILE, USE_SSL, POSTFIELDSIZE_LARGE, TCP_NODELAY, FTPSSLAUTH, IOCTLFUNCTION, IOCTLDATA, FTP_ACCOUNT, COOKIELIST, IGNORE_CONTENT_LENGTH, FTP_SKIP_PASV_IP, FTP_FILEMETHOD, LOCALPORT, LOCALPORTRANGE, CONNECT_ONLY, CONV_FROM_NETWORK_FUNCTION, CONV_TO_NETWORK_FUNCTION, CONV_FROM_UTF8_FUNCTION, MAX_SEND_SPEED_LARGE, MAX_RECV_SPEED_LARGE, FTP_ALTERNATIVE_TO_USER, SOCKOPTFUNCTION, SOCKOPTDATA, SSL_SESSIONID_CACHE, SSH_AUTH_TYPES, SSH_PUBLIC_KEYFILE, SSH_PRIVATE_KEYFILE, FTP_SSL_CCC, TIMEOUT_MS, CONNECTTIMEOUT_MS, HTTP_TRANSFER_DECODING, HTTP_CONTENT_DECODING, NEW_FILE_PERMS, NEW_DIRECTORY_PERMS, POSTREDIR, SSH_HOST_PUBLIC_KEY_MD5, OPENSOCKETFUNCTION, OPENSOCKETDATA, COPYPOSTFIELDS, PROXY_TRANSFER_MODE, SEEKFUNCTION, SEEKDATA, CRLFILE, ISSUERCERT, ADDRESS_SCOPE, CERTINFO, USERNAME, PASSWORD, PROXYUSERNAME, PROXYPASSWORD, NOPROXY, TFTP_BLKSIZE, SOCKS5_GSSAPI_SERVICE, SOCKS5_GSSAPI_NEC, PROTOCOLS, REDIR_PROTOCOLS, SSH_KNOWNHOSTS, SSH_KEYFUNCTION, SSH_KEYDATA, LASTENTRY } [CCode (name = "CURLINFO", cprefix = "CURLINFO_")] public enum Info { STRING, LONG, DOUBLE, SLIST, EFFECTIVE_URL, RESPONSE_CODE, TOTAL_TIME, NAMELOOKUP_TIME, CONNECT_TIME, PRETRANSFER_TIME, SIZE_UPLOAD, SIZE_DOWNLOAD, SPEED_DOWNLOAD, SPEED_UPLOAD, HEADER_SIZE, REQUEST_SIZE, SSL_VERIFYRESULT, FILETIME, CONTENT_LENGTH_DOWNLOAD, CONTENT_LENGTH_UPLOAD, STARTTRANSFER_TIME, CONTENT_TYPE, REDIRECT_TIME, REDIRECT_COUNT, PRIVATE, HTTP_CONNECTCODE, HTTPAUTH_AVAIL, PROXYAUTH_AVAIL, OS_ERRNO, NUM_CONNECTS, SSL_ENGINES, COOKIELIST, LASTSOCKET, FTP_ENTRY_PATH, REDIRECT_URL, PRIMARY_IP, APPCONNECT_TIME, CERTINFO, CONDITION_UNMET, LASTONE } [CCode (cname = "curl_progress_callback")] public delegate int ProgressCallback (void* clientp, double dltotal, double dlnow, double ultotal, double ulnow); [CCode (cname = "CURL_WRITEFUNC_PAUSE")] public const size_t WRITEFUNC_PAUSE; [CCode (cname = "curl_write_callback")] public delegate size_t WriteCallback (char* buffer, size_t size, size_t nitems, void *outstream); [CCode (cname = "CURL_SEEKFUNC_OK")] public const int SEEKFUNC_OK; [CCode (cname = "CURL_SEEKFUNC_FAIL")] public const int SEEKFUNC_FAIL; [CCode (cname = "CURL_SEEKFUNC_CANTSEEK")] public const int SEEKFUNC_CANTSEEK; [Ccode (cname = "curl_seek_callback")] public delegate int SeekCallback (void* instream, Curl.Offset offset, int origin); [CCode (cname = "CURL_READFUNC_ABORT")] public const size_t READFUNC_ABORT; [CCode (cname = "CURL_READFUNC_PAUSE")] public const size_t READFUNC_PAUSE; [CCode (cname = "curl_read_callback")] public delegate size_t ReadCallback (char* buffer, size_t size, size_t nitems, void *instream); [CCode (cname = "curlsocktype", cprefix = "CURLSOCKTYPE_")] public enum SocketType { IPCXN, LAST } [CCode (cname = "curl_sockopt_callback")] public delegate size_t SockoptCallback (void* clientp, Curl.Socket curlfd, Curl.SocketType purpose); [CCode (cname = "curlioerr", cprefix = "CURLIOE_")] public enum IOError { OK, UNKNOWNCMD, FAILRESTART, LAST } [CCode (cname = "curliocmd", cprefix = "CURLIOCMD_")] public enum IOCmd { NOP, RESTARTREAD, LAST } [CCode (cname = "curl_ioctl_callback")] public delegate Curl.IOError IoctlCallback (Curl.EasyHandle handle, int cmd, void* clientp); [CCode (cname = "curl_malloc_callback")] public delegate void* MallocCallback (size_t size); [CCode (cname = "curl_free_callback")] public delegate void FreeCallback (void* ptr); [CCode (cname = "curl_realloc_callback")] public delegate void* ReallocCallback (void* ptr, size_t size); [CCode (cname = "curl_strdup_callback")] public delegate string StrdupCallback (string str); [CCode (cname = "curl_calloc_callback")] public delegate void* CallocCallback (size_t nmemb, size_t size); [CCode (cname = "curl_infotype", cprefix = "CURLINFO_")] public enum InfoType { TEXT, HEADER_IN, HEADER_OUT, DATA_IN, DATA_OUT, SSL_DATA_IN, SSL_DATA_OUT } [CCode (cname = "curl_debug_callback")] public delegate int DebugCallback (Curl.EasyHandle handle, Curl.InfoType type, [CCode (array_length_type = "size_t")] char[] data, void* userptr); [CCode (cname = "curl_conv_callback")] public delegate Curl.Code ConvCallback ([CCode (array_length_type = "size_t")] char[] buffer); [CCode (cname = "curl_ssl_ctx_callback")] public delegate Curl.Code SSLCtxCallback (Curl.EasyHandle curl, void* ssl_ctx, void* userptr); [CCode (cname = "curl_proxytype", cprefix = "CURLPROXY_")] public enum ProxyType { HTTP, HTTP_1_0, SOCKS4, SOCKS5, SOCKS4A, SOCKS5_HOSTNAME } namespace AuthType { [CCode (cname = "CURLAUTH_NONE")] public const int NONE; [CCode (cname = "CURLAUTH_BASIC")] public const int BASIC; [CCode (cname = "CURLAUTH_DIGEST")] public const int DIGEST; [CCode (cname = "CURLAUTH_GSSNEGOTIATE")] public const int GSSNEGOTIATE; [CCode (cname = "CURLAUTH_NTLM")] public const int NTLM; [CCode (cname = "CURLAUTH_DIGEST_IE")] public const int DIGEST_IE; [CCode (cname = "CURLAUTH_ANY")] public const int ANY; [CCode (cname = "CURLAUTH_ANYSAFE")] public const int ANYSAFE; } namespace SSHAuthType { [CCode (cname = "CURLSSH_AUTH_ANY")] public const int ANY; [CCode (cname = "CURLSSH_AUTH_NONE")] public const int NONE; [CCode (cname = "CURLSSH_AUTH_PUBLICKEY")] public const int PUBLICKEY; [CCode (cname = "CURLSSH_AUTH_PASSWORD")] public const int PASSWORD; [CCode (cname = "CURLSSH_AUTH_HOST")] public const int HOST; [CCode (cname = "CURLSSH_AUTH_KEYBOARD")] public const int KEYBOARD; [CCode (cname = "CURLSSH_AUTH_DEFAULT")] public const int DEFAULT; } public const int ERROR_SIZE; [CCode (cname = "curl_usessl", cprefix = "CURLUSESSL_")] public enum UseSSL { NONE, TRY, CONTROL, ALL } [CCode (cname = "curl_ftpccc", cprefix = "CURLFTPSSL_")] enum FTPSSL { CCC_NONE, CCC_PASSIVE, CCC_ACTIVE } [CCode (cname = "curl_ftpauth", cprefix = "CURLFTPAUTH_")] enum FTPAuthType { DEFAULT, SSL, TLS } [CCode (cname = "curl_ftpcreatedir", cprefix = "CURLFTP_CREATE_DIR_")] enum FTPCreateDir { NONE, [CCode (cname = "CURLFTP_CREATE_DIR")] CREATE, RETRY } [CCode (cname = "curl_ftpmethod", cprefix = "CURLFTPMETHOD_")] enum FTPMethod { DEFAULT, MULTICWD, NOCWD, SINGLECWD } namespace Proto { [CCode (cname = "CURLPROTO_HTTP")] public const int HTTP; [CCode (cname = "CURLPROTO_HTTPS")] public const int HTTPS; [CCode (cname = "CURLPROTO_FTP")] public const int FTP; [CCode (cname = "CURLPROTO_FTPS")] public const int FTPS; [CCode (cname = "CURLPROTO_SCP")] public const int SCP; [CCode (cname = "CURLPROTO_SFTP")] public const int SFTP; [CCode (cname = "CURLPROTO_TELNET")] public const int TELNET; [CCode (cname = "CURLPROTO_LDAP")] public const int LDAP; [CCode (cname = "CURLPROTO_LDAPS")] public const int LDAPS; [CCode (cname = "CURLPROTO_DICT")] public const int DICT; [CCode (cname = "CURLPROTO_FILE")] public const int FILE; [CCode (cname = "CURLPROTO_TFTP")] public const int TFTP; [CCode (cname = "CURLPROTO_ALL")] public const int ALL; } public const int IPRESOLVE_WHATEVER; public const int IPRESOLVE_V4; public const int IPRESOLVE_V6; public const int REDIR_GET_ALL; public const int REDIR_POST_301; public const int REDIR_POST_302; public const int REDIR_POST_ALL; [CCode (cname = "curl_TimeCond", cprefix = "CURL_TIMECOND_")] public enum TimeCond { NONE, IFMODSINCE, IFUNMODSINCE, LASTMOD } [CCode (cname = "CURLformoption", cprefix = "CURLFORM_")] public enum FormOption { COPYNAME, PTRNAME, NAMELENGTH, COPYCONTENTS, PTRCONTENTS, CONTENTSLENGTH, FILECONTENT, ARRAY, OBSOLETE, FILE, BUFFER, BUFFERPTR, BUFFERLENGTH, CONTENTTYPE, CONTENTHEADER, FILENAME, END, OBSOLETE2, STREAM } [CCode (cname = "struct curl_forms")] public struct Forms { public Curl.FormOption option; public string value; } [CCode (cname = "CURLFORMcode", cprefix = "CURL_FORMADD_")] public enum FormCode { OK, MEMORY, OPTION_TWICE, NULL, UNKNOWN_OPTION, INCOMPLETE, ILLEGAL_ARRAY, DISABLED } [CCode (sentinel = "CURLFORM_END")] public Curl.FormCode formadd (ref Curl.HTTPPost httppost, ref unowned Curl.HTTPPost last_post, ...); [CCode (cname = "curl_formget_callback")] public delegate size_t FormgetCallback (void* arg, [CCode (array_size_type = "size_t")] char[] buf); public int formget (Curl.HTTPPost form, void* arg, Curl.FormgetCallback append); public unowned string version (); public void free (void* p); [Compact] [CCode (cname = "struct curl_slist", cprefix = "curl_slist_", free_function = "curl_slist_free_all")] public class SList { public string data; public Curl.SList next; public static SList append (SList? slist, string data); } [CCode (cname = "CURLMcode", cprefix = "CURLM_")] public enum MultiCode { CALL_MULTI_PERFORM, CALL_MULTI_SOCKET, OK, BAD_HANDLE, BAD_EASY_HANDLE, OUT_OF_MEMORY, INTERNAL_ERROR, BAD_SOCKET, UNKNOWN_OPTION } [CCode (cname = "CURLMSG", cprefix = "CURLMSG_")] public enum MessageType { NONE, DONE } [CCode (cname = "CURLMsg")] public struct Message { public Curl.MessageType msg; public Curl.EasyHandle easy_handle; [CCode (cname = "data.whatever")] public void* whatever; [CCode (cname = "data.result")] public Curl.Code result; } [Compact] [CCode (cname = "CURLM", cprefix = "curl_multi_", free_function = "curl_multi_cleanup")] public class MultiHandle { [CCode (cname = "curl_multi_init")] public MultiHandle (); public Curl.MultiCode add_handle (Curl.EasyHandle curl_handle); public Curl.MultiCode remove_handle (Curl.EasyHandle curl_handle); public Curl.MultiCode fdset (Posix.fd_set? read_fd_set, Posix.fd_set? write_fd_set, Posix.fd_set? exc_fd_set, out int max_fd); public Curl.MultiCode perform (out int running_handles); public unowned Curl.Message info_read (out int msgs_in_queue); public unowned string strerror (Curl.MultiCode code); public Curl.MultiCode socket_action (Curl.Socket s, int ev_bitmask, out int running_handles); public Curl.MultiCode socket_all (out int running_handles); public Curl.MultiCode timeout (out long milliseconds); [Printf] public Curl.MultiCode setopt (Curl.MultiOption option, ...); public Curl.MultiCode assign (Curl.Socket sockfd, void* sockp); } [CCode (has_target = false)] public delegate int TimerCallback (Curl.MultiHandle multi, long timeout_ms, void* userp); [SimpleType] [CCode (cname = "curl_socket_t")] public struct Socket { } [SimpleType] [CCode (cname = "curl_off_t")] public struct Offset { } [CCode (cname = "CURL_SOCKET_BAD")] public const Curl.Socket SOCKET_BAD; [CCode (cname = "CURL_POLL_NONE")] public const int POLL_NONE; [CCode (cname = "CURL_POLL_IN")] public const int POLL_IN; [CCode (cname = "CURL_POLL_OUT")] public const int POLL_OUT; [CCode (cname = "CURL_POLL_INOUT")] public const int POLL_INOUT; [CCode (cname = "CURL_POLL_REMOVE")] public const int POLL_REMOVE; [CCode (cname = "CURL_SOCKET_TIMEOUT")] public const int SOCKET_TIMEOUT; [CCode (cname = "CURL_CSELECT_IN")] public const int CSELECT_IN; [CCode (cname = "CURL_CSELECT_OUT")] public const int CSELECT_OUT; [CCode (cname = "CURL_CSELECT_ERR")] public const int CSELECT_ERR; [CCode (cname = "CURLMoption")] public enum MultiOption { SOCKETFUNCTION, SOCKETDATA, PIPELINING, TIMERFUNCTION, TIMERDATA, MAXCONNECTS } [Compact] [CCode (cname = "struct curl_httppost", free_function = "curl_formfree")] public class HTTPPost { public Curl.HTTPPost next; [CCode (array_length_cname = "namelength", array_length_type = "long")] public weak char[] name; [CCode (array_length_cname = "contentslength", array_length_type = "long")] public weak char[] contents; [CCode (array_length_cname = "bufferlength", array_length_type = "long")] public weak char[] buffer; public string contenttype; public Curl.SList contentheader; public Curl.HTTPPost more; public long flags; public string showfilename; public void* userp; [CCode (cname = "HTTPPOST_FILENAME")] public const long FILENAME; [CCode (cname = "HTTPPOST_READFILE")] public const long READFILE; [CCode (cname = "HTTPPOST_PTRCONTENTS")] public const long PTRCONTENTS; [CCode (cname = "HTTPPOST_BUFFER")] public const long BUFFER; [CCode (cname = "HTTPPOST_PTRBUFFER")] public const long PTRBUFFER; [CCode (cname = "HTTPPOST_CALLBACK")] public const long CALLBACK; } [CCode (cname = "LIBCURL_COPYRIGHT")] public const string COPYRIGHT; [CCode (cname = "LIBCURL_VERSION")] public const string VERSION; [CCode (cname = "LIBCURL_VERSION_MAJOR")] public const int VERSION_MAJOR; [CCode (cname = "LIBCURL_VERSION_MINOR")] public const int VERSION_MINOR; [CCode (cname = "LIBCURL_VERSION_PATCH")] public const int VERSION_PATCH; [CCode (cname = "LIBCURL_VERSION_NUM")] public const int VERSION_NUM; [CCode (cname = "LIBCURL_TIMESTAMP")] public const string TIMESTAMP; }