#ifndef URLX_H
#define URLX_H
#include <stdarg.h>
#include <stdbool.h>
#include <stdint.h>
#include <stdlib.h>
typedef void CURL;
#define CURL_GLOBAL_SSL 1
#define CURL_GLOBAL_WIN32 2
#define CURL_GLOBAL_ALL 3
#define CURL_GLOBAL_DEFAULT 3
#define CURL_VERSION_SSL (1 << 2)
#define CURL_VERSION_HTTP2 (1 << 16)
#define CURL_VERSION_ASYNCHDNS (1 << 7)
#define CURL_VERSION_PSL (1 << 20)
#define CURLPAUSE_RECV 1
#define CURLPAUSE_SEND 4
#define CURLPAUSE_ALL 5
#define CURLPAUSE_CONT 0
typedef enum CURLINFO {
CURLINFO_EFFECTIVE_URL = 1048577,
CURLINFO_RESPONSE_CODE = 2097154,
CURLINFO_TOTAL_TIME = 3145731,
CURLINFO_NAMELOOKUP_TIME = 3145732,
CURLINFO_CONNECT_TIME = 3145733,
CURLINFO_SIZE_UPLOAD = 3145735,
CURLINFO_SIZE_DOWNLOAD = 3145736,
CURLINFO_SPEED_DOWNLOAD = 3145737,
CURLINFO_SPEED_UPLOAD = 3145738,
CURLINFO_HEADER_SIZE = 2097163,
CURLINFO_FILETIME = 2097166,
CURLINFO_CONTENT_LENGTH_DOWNLOAD = 3145743,
CURLINFO_CONTENT_LENGTH_UPLOAD = 3145744,
CURLINFO_PRETRANSFER_TIME = 3145742,
CURLINFO_STARTTRANSFER_TIME = 3145745,
CURLINFO_CONTENT_TYPE = 1048594,
CURLINFO_REDIRECT_COUNT = 2097172,
CURLINFO_SSL_VERIFYRESULT = 2097165,
CURLINFO_PRIVATE = 1048597,
CURLINFO_OS_ERRNO = 2097177,
CURLINFO_PRIMARY_IP = 1048608,
CURLINFO_NUM_CONNECTS = 2097190,
CURLINFO_LOCAL_IP = 1048617,
CURLINFO_REDIRECT_URL = 1048625,
CURLINFO_HTTP_VERSION = 2097202,
CURLINFO_APPCONNECT_TIME = 3145779,
CURLINFO_CONDITION_UNMET = 2097205,
CURLINFO_PRIMARY_PORT = 2097216,
CURLINFO_LOCAL_PORT = 2097218,
CURLINFO_SCHEME = 1048644,
CURLINFO_REDIRECT_TIME = 3145747,
CURLINFO_TOTAL_TIME_T = 6291518,
CURLINFO_NAMELOOKUP_TIME_T = 6291519,
CURLINFO_CONNECT_TIME_T = 6291520,
CURLINFO_PRETRANSFER_TIME_T = 6291521,
CURLINFO_STARTTRANSFER_TIME_T = 6291522,
CURLINFO_REDIRECT_TIME_T = 6291523,
CURLINFO_APPCONNECT_TIME_T = 6291524,
CURLINFO_RETRY_AFTER = 2097210,
CURLINFO_SIZE_UPLOAD_T = 6291525,
CURLINFO_SIZE_DOWNLOAD_T = 6291526,
CURLINFO_SPEED_DOWNLOAD_T = 6291527,
CURLINFO_SPEED_UPLOAD_T = 6291528,
CURLINFO_REQUEST_SIZE = 2097164,
CURLINFO_HTTP_CONNECTCODE = 2097174,
CURLINFO_HTTPAUTH_AVAIL = 2097175,
CURLINFO_PROXYAUTH_AVAIL = 2097176,
} CURLINFO;
typedef enum CURLMSG {
CURLMSG_DONE = 1,
} CURLMSG;
typedef enum CURLMcode {
CURLM_OK = 0,
CURLM_BAD_HANDLE = -1,
CURLM_BAD_EASY_HANDLE = -2,
CURLM_OUT_OF_MEMORY = -3,
CURLM_INTERNAL_ERROR = -4,
CURLM_UNKNOWN_OPTION = -6,
} CURLMcode;
typedef enum CURLSHcode {
CURLSHE_OK = 0,
CURLSHE_BAD_OPTION = 1,
CURLSHE_IN_USE = 2,
CURLSHE_INVALID = 3,
CURLSHE_NOMEM = 4,
CURLSHE_NOT_BUILT_IN = 5,
} CURLSHcode;
typedef enum CURLUcode {
CURLUE_OK = 0,
CURLUE_BAD_HANDLE = 1,
CURLUE_BAD_PARTPOINTER = 2,
CURLUE_MALFORMED_INPUT = 3,
CURLUE_BAD_PORT_NUMBER = 4,
CURLUE_UNSUPPORTED_SCHEME = 5,
CURLUE_OUT_OF_MEMORY = 7,
CURLUE_NO_SCHEME = 8,
CURLUE_NO_HOST = 9,
CURLUE_UNKNOWN_PART = 11,
} CURLUcode;
typedef enum CURLcode {
CURLE_OK = 0,
CURLE_UNSUPPORTED_PROTOCOL = 1,
CURLE_FAILED_INIT = 2,
CURLE_URL_MALFORMAT = 3,
CURLE_COULDNT_RESOLVE_PROXY = 5,
CURLE_COULDNT_RESOLVE_HOST = 6,
CURLE_COULDNT_CONNECT = 7,
CURLE_FTP_WEIRD_SERVER_REPLY = 8,
CURLE_REMOTE_ACCESS_DENIED = 9,
CURLE_HTTP2 = 16,
CURLE_HTTP_RETURNED_ERROR = 22,
CURLE_WRITE_ERROR = 23,
CURLE_READ_ERROR = 26,
CURLE_OUT_OF_MEMORY = 27,
CURLE_OPERATION_TIMEDOUT = 28,
CURLE_SSL_CONNECT_ERROR = 35,
CURLE_ABORTED_BY_CALLBACK = 42,
CURLE_BAD_FUNCTION_ARGUMENT = 43,
CURLE_UNKNOWN_OPTION = 48,
CURLE_GOT_NOTHING = 52,
CURLE_SEND_ERROR = 55,
CURLE_RECV_ERROR = 56,
CURLE_SSL_CERTPROBLEM = 58,
CURLE_PEER_FAILED_VERIFICATION = 60,
CURLE_FILESIZE_EXCEEDED = 63,
CURLE_LOGIN_DENIED = 67,
CURLE_TOO_MANY_REDIRECTS = 47,
CURLE_HTTP3 = 95,
CURLE_PARTIAL_FILE = 18,
CURLE_RANGE_ERROR = 33,
CURLE_AGAIN = 81,
CURLE_AUTH_ERROR = 94,
CURLE_UNRECOVERABLE_POLL = 99,
CURLE_FTP_COULDNT_RETR_FILE = 19,
CURLE_UPLOAD_FAILED = 25,
CURLE_LDAP_SEARCH_FAILED = 39,
CURLE_FUNCTION_NOT_FOUND = 41,
CURLE_INTERFACE_FAILED = 45,
CURLE_SSL_ENGINE_NOTFOUND = 53,
CURLE_SSL_ENGINE_SETFAILED = 54,
CURLE_RTSP_CSEQ_ERROR = 85,
CURLE_RTSP_SESSION_ERROR = 86,
CURLE_SSL_PINNEDPUBKEYNOTMATCH = 90,
CURLE_SSL_INVALIDCERTSTATUS = 91,
} CURLcode;
typedef enum CURLoption {
CURLOPT_WRITEDATA = 10001,
CURLOPT_URL = 10002,
CURLOPT_PROXY = 10004,
CURLOPT_USERPWD = 10005,
CURLOPT_RANGE = 10007,
CURLOPT_ERRORBUFFER = 10010,
CURLOPT_POSTFIELDS = 10015,
CURLOPT_USERAGENT = 10018,
CURLOPT_COOKIE = 10022,
CURLOPT_HTTPHEADER = 10023,
CURLOPT_SSLCERT = 10025,
CURLOPT_HEADERDATA = 10029,
CURLOPT_CUSTOMREQUEST = 10036,
CURLOPT_STDERR = 10037,
CURLOPT_CAINFO = 10065,
CURLOPT_SSLKEY = 10087,
CURLOPT_INTERFACE = 10062,
CURLOPT_SSL_CIPHER_LIST = 10083,
CURLOPT_ACCEPT_ENCODING = 10102,
CURLOPT_COOKIEFILE = 10031,
CURLOPT_COOKIEJAR = 10082,
CURLOPT_COOKIELIST = 10135,
CURLOPT_PROXYUSERPWD = 10006,
CURLOPT_NOPROXY = 10177,
CURLOPT_RESOLVE = 10203,
CURLOPT_PINNEDPUBLICKEY = 10230,
CURLOPT_UNIX_SOCKET_PATH = 10231,
CURLOPT_PROXY_CAINFO = 10246,
CURLOPT_PROXY_SSLCERT = 10254,
CURLOPT_PROXY_SSLKEY = 10255,
CURLOPT_READDATA = 10009,
CURLOPT_DEBUGDATA = 10095,
CURLOPT_DNS_SERVERS = 10211,
CURLOPT_TLSAUTH_TYPE = 10216,
CURLOPT_TLSAUTH_USERNAME = 10217,
CURLOPT_TLSAUTH_PASSWORD = 10218,
CURLOPT_DOH_URL = 10279,
CURLOPT_HSTS = 10300,
CURLOPT_PROTOCOLS_STR = 10318,
CURLOPT_REDIR_PROTOCOLS_STR = 10319,
CURLOPT_TIMEOUT = 13,
CURLOPT_LOW_SPEED_LIMIT = 19,
CURLOPT_LOW_SPEED_TIME = 20,
CURLOPT_SSLVERSION = 32,
CURLOPT_VERBOSE = 41,
CURLOPT_NOBODY = 44,
CURLOPT_FAILONERROR = 45,
CURLOPT_UPLOAD = 46,
CURLOPT_POST = 47,
CURLOPT_FOLLOWLOCATION = 52,
CURLOPT_PUT = 54,
CURLOPT_POSTFIELDSIZE = 60,
CURLOPT_HTTPPROXYTUNNEL = 61,
CURLOPT_SSL_VERIFYPEER = 64,
CURLOPT_MAXREDIRS = 68,
CURLOPT_FRESH_CONNECT = 74,
CURLOPT_FORBID_REUSE = 75,
CURLOPT_CONNECTTIMEOUT = 78,
CURLOPT_HTTPGET = 80,
CURLOPT_SSL_VERIFYHOST = 81,
CURLOPT_PROXYAUTH = 111,
CURLOPT_HTTPAUTH = 107,
CURLOPT_MAXFILESIZE = 114,
CURLOPT_PROXY_SSL_VERIFYPEER = 248,
CURLOPT_PROXY_SSL_VERIFYHOST = 249,
CURLOPT_TCP_NODELAY = 121,
CURLOPT_LOCALPORT = 139,
CURLOPT_TIMEOUT_MS = 155,
CURLOPT_CONNECTTIMEOUT_MS = 156,
CURLOPT_POSTREDIR = 161,
CURLOPT_DNS_CACHE_TIMEOUT = 92,
CURLOPT_TRANSFER_ENCODING = 207,
CURLOPT_EXPECT_100_TIMEOUT_MS = 227,
CURLOPT_PATH_AS_IS = 234,
CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS = 271,
CURLOPT_DNS_SHUFFLE_ADDRESSES = 275,
CURLOPT_UNRESTRICTED_AUTH = 105,
CURLOPT_IGNORE_CONTENT_LENGTH = 136,
CURLOPT_TCP_KEEPALIVE = 213,
CURLOPT_SSL_SESSIONID_CACHE = 150,
CURLOPT_PORT = 3,
CURLOPT_INFILESIZE = 14,
CURLOPT_RESUME_FROM = 21,
CURLOPT_PROXYPORT = 59,
CURLOPT_FILETIME = 69,
CURLOPT_MAXCONNECTS = 71,
CURLOPT_BUFFERSIZE = 98,
CURLOPT_PROXYTYPE = 101,
CURLOPT_IPRESOLVE = 113,
CURLOPT_FTP_FILEMETHOD = 138,
CURLOPT_PIPEWAIT = 237,
CURLOPT_STREAM_WEIGHT = 239,
CURLOPT_TCP_FASTOPEN = 244,
CURLOPT_SOCKS5_AUTH = 267,
CURLOPT_HTTP09_ALLOWED = 285,
CURLOPT_POSTFIELDSIZE_LARGE = 30120,
CURLOPT_INFILESIZE_LARGE = 30115,
CURLOPT_MAXFILESIZE_LARGE = 30117,
CURLOPT_MAX_SEND_SPEED_LARGE = 30145,
CURLOPT_MAX_RECV_SPEED_LARGE = 30146,
CURLOPT_CAPATH = 10097,
CURLOPT_REFERER = 10016,
CURLOPT_XOAUTH2_BEARER = 10220,
CURLOPT_AWS_SIGV4 = 10306,
CURLOPT_SHARE = 10100,
CURLOPT_PRIVATE = 10103,
CURLOPT_MIMEPOST = 10269,
CURLOPT_WRITEFUNCTION = 20011,
CURLOPT_READFUNCTION = 20012,
CURLOPT_PROGRESSFUNCTION = 20056,
CURLOPT_HEADERFUNCTION = 20079,
CURLOPT_DEBUGFUNCTION = 20094,
CURLOPT_SEEKFUNCTION = 20167,
CURLOPT_XFERINFOFUNCTION = 20219,
CURLOPT_NOPROGRESS = 43,
CURLOPT_AUTOREFERER = 58,
CURLOPT_HTTP_VERSION = 84,
CURLOPT_NOSIGNAL = 99,
CURLOPT_LOCALPORTRANGE = 164,
CURLOPT_RESUME_FROM_LARGE = 30116,
CURLOPT_PROGRESSDATA = 10057,
CURLOPT_SEEKDATA = 10168,
} CURLoption;
typedef struct curl_slist {
char *data;
struct curl_slist *next;
} curl_slist;
typedef struct CURLMsg {
enum CURLMSG msg;
void *easy_handle;
enum CURLcode result;
} CURLMsg;
typedef struct curl_waitfd {
long fd;
short events;
short revents;
} curl_waitfd;
typedef struct CurlVersionInfo {
long age;
const char *version;
long version_num;
const char *host;
long features;
const char *ssl_version;
long ssl_version_num;
const char *libz_version;
const char *const *protocols;
} CurlVersionInfo;
#ifdef __cplusplus
extern "C" {
#endif
void *curl_mime_init(void *_easy) ;
void *curl_mime_addpart(void *mime) ;
enum CURLcode curl_mime_name(void *part, const char *name) ;
enum CURLcode curl_mime_data(void *part, const char *data, uintptr_t datasize) ;
enum CURLcode curl_mime_filename(void *part, const char *filename) ;
enum CURLcode curl_mime_type(void *part, const char *mimetype) ;
void curl_mime_free(void *mime) ;
void *curl_share_init(void) ;
enum CURLSHcode curl_share_cleanup(void *share) ;
enum CURLSHcode curl_share_setopt(void *share, long option, const void *value) ;
const char *curl_share_strerror(enum CURLSHcode code) ;
void *curl_url(void) ;
void curl_url_cleanup(void *handle) ;
void *curl_url_dup(void *handle) ;
enum CURLUcode curl_url_set(void *handle, long what, const char *content, long _flags) ;
enum CURLUcode curl_url_get(void *handle, long what, char **part, long _flags) ;
void curl_free(void *ptr) ;
struct curl_slist *curl_slist_append(struct curl_slist *list, const char *data) ;
void curl_slist_free_all(struct curl_slist *list) ;
void *curl_easy_init(void) ;
void curl_easy_cleanup(void *handle) ;
void *curl_easy_duphandle(void *handle) ;
void curl_easy_reset(void *handle) ;
enum CURLcode curl_easy_setopt(void *handle, long option, const void *value) ;
enum CURLcode curl_easy_perform(void *handle) ;
enum CURLcode curl_easy_getinfo(void *handle, long info, void *out) ;
const char *curl_easy_strerror(enum CURLcode code) ;
void *curl_multi_init(void) ;
enum CURLMcode curl_multi_cleanup(void *handle) ;
enum CURLMcode curl_multi_add_handle(void *multi, void *easy) ;
enum CURLMcode curl_multi_remove_handle(void *multi, void *easy) ;
enum CURLMcode curl_multi_perform(void *multi, long *running_handles) ;
const struct CURLMsg *curl_multi_info_read(void *multi, long *msgs_in_queue) ;
enum CURLMcode curl_multi_setopt(void *multi, long option, const void *value) ;
enum CURLMcode curl_multi_timeout(void *multi, long *timeout_ms) ;
enum CURLMcode curl_multi_wait(void *multi,
struct curl_waitfd *_extra_fds,
long _extra_nfds,
long timeout_ms,
long *numfds)
;
enum CURLMcode curl_multi_poll(void *multi,
struct curl_waitfd *fds,
long nfds,
long timeout_ms,
long *numfds)
;
enum CURLMcode curl_multi_wakeup(void *multi) ;
enum CURLMcode curl_multi_fdset(void *multi,
void *_read_fd_set,
void *_write_fd_set,
void *_exc_fd_set,
long *max_fd)
;
enum CURLMcode curl_multi_socket_action(void *multi,
long sockfd,
long _ev_bitmask,
long *running_handles)
;
const char *curl_multi_strerror(enum CURLMcode code) ;
char *curl_escape(const char *string, long length) ;
char *curl_unescape(const char *string, long length, long *outlength) ;
char *curl_easy_escape(void *_handle, const char *string, long length) ;
char *curl_easy_unescape(void *_handle, const char *string, long inlength, long *outlength) ;
int64_t curl_getdate(const char *datestring, const void *_now) ;
long curl_formadd(void **_first, void **_last) ;
void curl_formfree(void *_form) ;
const char *curl_version(void) ;
const char *urlx_version(void) ;
enum CURLcode curl_global_init(long _flags) ;
void curl_global_cleanup(void) ;
const struct CurlVersionInfo *curl_version_info(long _age) ;
enum CURLcode curl_easy_pause(void *_handle, long _bitmask) ;
enum CURLcode curl_easy_upkeep(void *_handle) ;
enum CURLMcode curl_multi_assign(void *_multi_handle, long _sockfd, void *_sockp) ;
#ifdef __cplusplus
} #endif
#endif