with System;
with Interfaces.C; use Interfaces.C;
with Interfaces.C.Strings; use Interfaces.C.Strings;
with Ada.Calendar; use Ada.Calendar;
package Adacurl is
pragma Link_With("-lcurl");
LIBCURL_VERSION : constant String := "7.10.6";
LIBCURL_VERSION_NUM : constant := 16#070a06#;
subtype time_t is long;
type time_t_Pointer is access all time_t;
subtype File_P is System.Address;
HTTPPOST_FILENAME : constant Long := 1;
HTTPPOST_READFILE : constant Long := 2;
HTTPPOST_PTRNAME : constant Long := 4;
HTTPPOST_PTRCONTENTS : constant Long := 8;
HTTPPOST_BUFFER : constant Long := 16;
HTTPPOST_PTRBUFFER : constant Long := 32;
type Curl_Slist;
type Curl_Slist_P is access all Curl_Slist;
type Curl_Slist is record
Data : Chars_Ptr;
Next : Curl_Slist_P;
end record;
pragma Convention(C,Curl_Slist);
type Curl_Httppost;
type Curl_Httppost_P is access all Curl_Httppost;
type Curl_Httppost is record
Next : Curl_Httppost_P;
Name : Chars_Ptr;
Namelength : Long;
Contents : Chars_Ptr;
Contentslength : Long;
Buffer : Chars_Ptr;
Bufferlength : Long;
Contenttype : Chars_Ptr;
Contentheader : Curl_Slist_P;
More : Curl_Httppost_P;
Flags : Long;
Showfilename : Chars_Ptr;
end record;
pragma Convention(C,Curl_Httppost);
CURL_MAX_WRITE_SIZE : constant := 16384;
type Curl_Progress_Callback
is access function (Clientp : System.Address;
Dltotal : Double;
Dlnow : Double;
Ultotal : Double;
Ulnow : Double)
return Int;
type Curl_Readwrite_Callback
is access function (Buffer : Chars_Ptr;
Size : Size_T;
Nitems : Size_T;
Instream : FILE_P)
return Size_T;
type Curl_Passwd_Callback
is access function (Clientp : System.Address;
Prompt : Chars_Ptr;
Buffer : Chars_Ptr;
Buflen : Int) return Int;
type Curl_Infotype is (CURLINFO_TEXT,
CURLINFO_HEADER_IN,
CURLINFO_HEADER_OUT,
CURLINFO_DATA_IN,
CURLINFO_DATA_OUT,
CURLINFO_END);
pragma Convention(C,Curl_Infotype);
type CURL is new System.Address; type CURL_P is access all CURL;
type Curl_Debug_Callback
is access function (Handle : CURL_P;
Ctype : Curl_Infotype;
Data : Chars_Ptr;
Size : Size_T;
Userp : System.Address)
return Int;
type CURLcode is (CURLE_OK,
CURLE_UNSUPPORTED_PROTOCOL,
CURLE_FAILED_INIT,
CURLE_URL_MALFORMAT,
CURLE_URL_MALFORMAT_USER,
CURLE_COULDNT_RESOLVE_PROXY,
CURLE_COULDNT_RESOLVE_HOST,
CURLE_COULDNT_CONNECT,
CURLE_FTP_WEIRD_SERVER_REPLY,
CURLE_FTP_ACCESS_DENIED,
CURLE_FTP_USER_PASSWORD_INCORRECT,
CURLE_FTP_WEIRD_PASS_REPLY,
CURLE_FTP_WEIRD_USER_REPLY,
CURLE_FTP_WEIRD_PASV_REPLY,
CURLE_FTP_WEIRD_227_FORMAT,
CURLE_FTP_CANT_GET_HOST,
CURLE_FTP_CANT_RECONNECT,
CURLE_FTP_COULDNT_SET_BINARY,
CURLE_PARTIAL_FILE,
CURLE_FTP_COULDNT_RETR_FILE,
CURLE_FTP_WRITE_ERROR,
CURLE_FTP_QUOTE_ERROR,
CURLE_HTTP_NOT_FOUND,
CURLE_WRITE_ERROR,
CURLE_MALFORMAT_USER,
CURLE_FTP_COULDNT_STOR_FILE,
CURLE_READ_ERROR,
CURLE_OUT_OF_MEMORY,
CURLE_OPERATION_TIMEDOUT,
CURLE_FTP_COULDNT_SET_ASCII,
CURLE_FTP_PORT_FAILED,
CURLE_FTP_COULDNT_USE_REST,
CURLE_FTP_COULDNT_GET_SIZE,
CURLE_HTTP_RANGE_ERROR,
CURLE_HTTP_POST_ERROR,
CURLE_SSL_CONNECT_ERROR,
CURLE_BAD_DOWNLOAD_RESUME,
CURLE_FILE_COULDNT_READ_FILE,
CURLE_LDAP_CANNOT_BIND,
CURLE_LDAP_SEARCH_FAILED,
CURLE_LIBRARY_NOT_FOUND,
CURLE_FUNCTION_NOT_FOUND,
CURLE_ABORTED_BY_CALLBACK,
CURLE_BAD_FUNCTION_ARGUMENT,
CURLE_BAD_CALLING_ORDER,
CURLE_HTTP_PORT_FAILED,
CURLE_BAD_PASSWORD_ENTERED,
CURLE_TOO_MANY_REDIRECTS ,
CURLE_UNKNOWN_TELNET_OPTION,
CURLE_TELNET_OPTION_SYNTAX ,
CURLE_OBSOLETE,
CURLE_SSL_PEER_CERTIFICATE,
CURLE_GOT_NOTHING,
CURLE_SSL_ENGINE_NOTFOUND,
CURLE_SSL_ENGINE_SETFAILED,
CURLE_SEND_ERROR,
CURLE_RECV_ERROR,
CURLE_SHARE_IN_USE,
CURLE_SSL_CERTPROBLEM,
CURLE_SSL_CIPHER,
CURLE_SSL_CACERT,
CURLE_BAD_CONTENT_ENCODING,
CURL_LAST
);
pragma Convention(C,Curlcode);
type Curl_Ssl_Ctx_Callback
is access function (C : CURL_P;
Ssl_Ctx : System.Address;
Userptr : System.Address) return CURLcode;
type Curl_Proxytype is (CURLPROXY_HTTP,
CURLPROXY_SOCKS4,
CURLPROXY_SOCKS5);
for Curl_Proxytype use (CURLPROXY_HTTP => 0,
CURLPROXY_SOCKS4 => 4,
CURLPROXY_SOCKS5 => 5);
pragma Convention(C,Curl_Proxytype);
CURLAUTH_NONE : constant := 0;
CURLAUTH_BASIC : constant := 1;
CURLAUTH_DIGEST : constant := 2;
CURLAUTH_GSSNEGOTIATE : constant := 4;
CURLAUTH_NTLM : constant := 8;
CURLAUTH_ANY : constant := 16#ffffffff#; CURLAUTH_ANYSAFE : constant := 16#fffffffe#;
CURL_ERROR_SIZE : constant := 256;
CURLOPTTYPE_LONG : constant := 0;
CURLOPTTYPE_OBJECTPOINT : constant := 10000;
CURLOPTTYPE_FUNCTIONPOINT : constant := 20000;
type CURLoption is (CURLOPT_NOTHING,
CURLOPT_PORT,
CURLOPT_TIMEOUT,
CURLOPT_INFILESIZE,
CURLOPT_LOW_SPEED_LIMIT,
CURLOPT_LOW_SPEED_TIME,
CURLOPT_RESUME_FROM,
CURLOPT_CRLF,
CURLOPT_SSLVERSION,
CURLOPT_TIMECONDITION,
CURLOPT_TIMEVALUE,
CURLOPT_VERBOSE,
CURLOPT_HEADER,
CURLOPT_NOPROGRESS,
CURLOPT_NOBODY,
CURLOPT_FAILONERROR,
CURLOPT_UPLOAD,
CURLOPT_POST,
CURLOPT_FTPLISTONLY,
CURLOPT_FTPAPPEND,
CURLOPT_NETRC,
CURLOPT_FOLLOWLOCATION,
CURLOPT_TRANSFERTEXT,
CURLOPT_PUT,
CURLOPT_MUTE,
CURLOPT_AUTOREFERER,
CURLOPT_PROXYPORT,
CURLOPT_POSTFIELDSIZE,
CURLOPT_HTTPPROXYTUNNEL,
CURLOPT_SSL_VERIFYPEER,
CURLOPT_MAXREDIRS,
CURLOPT_MAXCONNECTS,
CURLOPT_CLOSEPOLICY,
CURLOPT_FRESH_CONNECT,
CURLOPT_FORBID_REUSE,
CURLOPT_CONNECTTIMEOUT,
CURLOPT_HTTPGET,
CURLOPT_SSL_VERIFYHOST,
CURLOPT_HTTP_VERSION,
CURLOPT_FTP_USE_EPSV,
CURLOPT_SSLENGINE_DEFAULT,
CURLOPT_DNS_USE_GLOBAL_CACHE,
CURLOPT_DNS_CACHE_TIMEOUT,
CURLOPT_COOKIESESSION,
CURLOPT_BUFFERSIZE,
CURLOPT_NOSIGNAL,
CURLOPT_PROXYTYPE,
CURLOPT_UNRESTRICTED_AUTH,
CURLOPT_FTP_USE_EPRT,
CURLOPT_FILE,
CURLOPT_URL,
CURLOPT_PROXY,
CURLOPT_USERPWD,
CURLOPT_PROXYUSERPWD,
CURLOPT_RANGE,
CURLOPT_INFILE,
CURLOPT_ERRORBUFFER,
CURLOPT_POSTFIELDS,
CURLOPT_REFERER,
CURLOPT_FTPPORT,
CURLOPT_USERAGENT,
CURLOPT_COOKIE,
CURLOPT_HTTPHEADER,
CURLOPT_HTTPPOST,
CURLOPT_SSLCERT,
CURLOPT_SSLKEYPASSWD,
CURLOPT_QUOTE,
CURLOPT_WRITEHEADER,
CURLOPT_COOKIEFILE,
CURLOPT_HTTPREQUEST,
CURLOPT_CUSTOMREQUEST,
CURLOPT_STDERR,
CURLOPT_POSTQUOTE,
CURLOPT_WRITEINFO,
CURLOPT_PROGRESSDATA,
CURLOPT_INTERFACE,
CURLOPT_KRB4LEVEL,
CURLOPT_CAINFO,
CURLOPT_PASSWDDATA,
CURLOPT_FILETIME,
CURLOPT_TELNETOPTIONS,
CURLOPT_RANDOM_FILE,
CURLOPT_EGDSOCKET,
CURLOPT_COOKIEJAR,
CURLOPT_SSL_CIPHER_LIST,
CURLOPT_SSLCERTTYPE,
CURLOPT_SSLKEY,
CURLOPT_SSLKEYTYPE,
CURLOPT_SSLENGINE,
CURLOPT_PREQUOTE,
CURLOPT_DEBUGDATA,
CURLOPT_CAPATH,
CURLOPT_SHARE,
CURLOPT_ENCODING,
CURLOPT_PRIVATE,
CURLOPT_HTTP200ALIASES,
CURLOPT_WRITEFUNCTION,
CURLOPT_READFUNCTION,
CURLOPT_PROGRESSFUNCTION,
CURLOPT_PASSWDFUNCTION,
CURLOPT_CLOSEFUNCTION,
CURLOPT_HEADERFUNCTION,
CURLOPT_DEBUGFUNCTION,
CURLOPT_LASTENTRY); for Curloption use (CURLOPT_NOTHING => (CURLOPTTYPE_LONG + 0),
CURLOPT_PORT => (CURLOPTTYPE_LONG + 3),
CURLOPT_TIMEOUT => (CURLOPTTYPE_LONG + 13),
CURLOPT_INFILESIZE => (CURLOPTTYPE_LONG + 14),
CURLOPT_LOW_SPEED_LIMIT => (CURLOPTTYPE_LONG + 19),
CURLOPT_LOW_SPEED_TIME => (CURLOPTTYPE_LONG + 20),
CURLOPT_RESUME_FROM => (CURLOPTTYPE_LONG + 21),
CURLOPT_CRLF => (CURLOPTTYPE_LONG + 27),
CURLOPT_SSLVERSION => (CURLOPTTYPE_LONG + 32),
CURLOPT_TIMECONDITION => (CURLOPTTYPE_LONG + 33),
CURLOPT_TIMEVALUE => (CURLOPTTYPE_LONG + 34),
CURLOPT_VERBOSE => (CURLOPTTYPE_LONG + 41),
CURLOPT_HEADER => (CURLOPTTYPE_LONG + 42),
CURLOPT_NOPROGRESS => (CURLOPTTYPE_LONG + 43),
CURLOPT_NOBODY => (CURLOPTTYPE_LONG + 44),
CURLOPT_FAILONERROR => (CURLOPTTYPE_LONG + 45),
CURLOPT_UPLOAD => (CURLOPTTYPE_LONG + 46),
CURLOPT_POST => (CURLOPTTYPE_LONG + 47),
CURLOPT_FTPLISTONLY => (CURLOPTTYPE_LONG + 48),
CURLOPT_FTPAPPEND => (CURLOPTTYPE_LONG + 50),
CURLOPT_NETRC => (CURLOPTTYPE_LONG + 51),
CURLOPT_FOLLOWLOCATION => (CURLOPTTYPE_LONG + 52),
CURLOPT_TRANSFERTEXT => (CURLOPTTYPE_LONG + 53),
CURLOPT_PUT => (CURLOPTTYPE_LONG + 54),
CURLOPT_MUTE => (CURLOPTTYPE_LONG + 55),
CURLOPT_AUTOREFERER => (CURLOPTTYPE_LONG + 58),
CURLOPT_PROXYPORT => (CURLOPTTYPE_LONG + 59),
CURLOPT_POSTFIELDSIZE => (CURLOPTTYPE_LONG + 60),
CURLOPT_HTTPPROXYTUNNEL => (CURLOPTTYPE_LONG + 61),
CURLOPT_SSL_VERIFYPEER => (CURLOPTTYPE_LONG + 64),
CURLOPT_MAXREDIRS => (CURLOPTTYPE_LONG + 68),
CURLOPT_MAXCONNECTS => (CURLOPTTYPE_LONG + 71),
CURLOPT_CLOSEPOLICY => (CURLOPTTYPE_LONG + 72),
CURLOPT_FRESH_CONNECT => (CURLOPTTYPE_LONG + 74),
CURLOPT_FORBID_REUSE => (CURLOPTTYPE_LONG + 75),
CURLOPT_CONNECTTIMEOUT => (CURLOPTTYPE_LONG + 78),
CURLOPT_HTTPGET => (CURLOPTTYPE_LONG + 80),
CURLOPT_SSL_VERIFYHOST => (CURLOPTTYPE_LONG + 81),
CURLOPT_HTTP_VERSION => (CURLOPTTYPE_LONG + 84),
CURLOPT_FTP_USE_EPSV => (CURLOPTTYPE_LONG + 85),
CURLOPT_SSLENGINE_DEFAULT => (CURLOPTTYPE_LONG + 90),
CURLOPT_DNS_USE_GLOBAL_CACHE =>(CURLOPTTYPE_LONG + 91),
CURLOPT_DNS_CACHE_TIMEOUT => (CURLOPTTYPE_LONG + 92),
CURLOPT_COOKIESESSION => (CURLOPTTYPE_LONG + 96),
CURLOPT_BUFFERSIZE => (CURLOPTTYPE_LONG + 98),
CURLOPT_NOSIGNAL => (CURLOPTTYPE_LONG + 99),
CURLOPT_PROXYTYPE => (CURLOPTTYPE_LONG + 101),
CURLOPT_UNRESTRICTED_AUTH => (CURLOPTTYPE_LONG + 105),
CURLOPT_FTP_USE_EPRT => (CURLOPTTYPE_LONG + 106),
CURLOPT_FILE => (CURLOPTTYPE_OBJECTPOINT + 1),
CURLOPT_URL => (CURLOPTTYPE_OBJECTPOINT + 2),
CURLOPT_PROXY => (CURLOPTTYPE_OBJECTPOINT + 4),
CURLOPT_USERPWD => (CURLOPTTYPE_OBJECTPOINT + 5),
CURLOPT_PROXYUSERPWD => (CURLOPTTYPE_OBJECTPOINT + 6),
CURLOPT_RANGE => (CURLOPTTYPE_OBJECTPOINT + 7),
CURLOPT_INFILE => (CURLOPTTYPE_OBJECTPOINT + 9),
CURLOPT_ERRORBUFFER => (CURLOPTTYPE_OBJECTPOINT + 10),
CURLOPT_POSTFIELDS => (CURLOPTTYPE_OBJECTPOINT + 15),
CURLOPT_REFERER => (CURLOPTTYPE_OBJECTPOINT + 16),
CURLOPT_FTPPORT => (CURLOPTTYPE_OBJECTPOINT + 17),
CURLOPT_USERAGENT => (CURLOPTTYPE_OBJECTPOINT + 18),
CURLOPT_COOKIE => (CURLOPTTYPE_OBJECTPOINT + 22),
CURLOPT_HTTPHEADER => (CURLOPTTYPE_OBJECTPOINT + 23),
CURLOPT_HTTPPOST => (CURLOPTTYPE_OBJECTPOINT + 24),
CURLOPT_SSLCERT => (CURLOPTTYPE_OBJECTPOINT + 25),
CURLOPT_SSLKEYPASSWD => (CURLOPTTYPE_OBJECTPOINT + 26),
CURLOPT_QUOTE => (CURLOPTTYPE_OBJECTPOINT + 28),
CURLOPT_WRITEHEADER => (CURLOPTTYPE_OBJECTPOINT + 29),
CURLOPT_COOKIEFILE => (CURLOPTTYPE_OBJECTPOINT + 31),
CURLOPT_HTTPREQUEST => (CURLOPTTYPE_OBJECTPOINT + 35),
CURLOPT_CUSTOMREQUEST =>(CURLOPTTYPE_OBJECTPOINT + 36),
CURLOPT_STDERR => (CURLOPTTYPE_OBJECTPOINT + 37),
CURLOPT_POSTQUOTE => (CURLOPTTYPE_OBJECTPOINT + 39),
CURLOPT_WRITEINFO => (CURLOPTTYPE_OBJECTPOINT + 40),
CURLOPT_PROGRESSDATA => (CURLOPTTYPE_OBJECTPOINT + 57),
CURLOPT_INTERFACE => (CURLOPTTYPE_OBJECTPOINT + 62),
CURLOPT_KRB4LEVEL => (CURLOPTTYPE_OBJECTPOINT + 63),
CURLOPT_CAINFO => (CURLOPTTYPE_OBJECTPOINT + 65),
CURLOPT_PASSWDDATA => (CURLOPTTYPE_OBJECTPOINT + 67),
CURLOPT_FILETIME => (CURLOPTTYPE_OBJECTPOINT + 69),
CURLOPT_TELNETOPTIONS =>(CURLOPTTYPE_OBJECTPOINT + 70),
CURLOPT_RANDOM_FILE => (CURLOPTTYPE_OBJECTPOINT + 76),
CURLOPT_EGDSOCKET => (CURLOPTTYPE_OBJECTPOINT + 77),
CURLOPT_COOKIEJAR => (CURLOPTTYPE_OBJECTPOINT + 82),
CURLOPT_SSL_CIPHER_LIST=>(CURLOPTTYPE_OBJECTPOINT +83),
CURLOPT_SSLCERTTYPE => (CURLOPTTYPE_OBJECTPOINT + 86),
CURLOPT_SSLKEY => (CURLOPTTYPE_OBJECTPOINT + 87),
CURLOPT_SSLKEYTYPE => (CURLOPTTYPE_OBJECTPOINT + 88),
CURLOPT_SSLENGINE => (CURLOPTTYPE_OBJECTPOINT + 89),
CURLOPT_PREQUOTE => (CURLOPTTYPE_OBJECTPOINT + 93),
CURLOPT_DEBUGDATA => (CURLOPTTYPE_OBJECTPOINT + 95),
CURLOPT_CAPATH => (CURLOPTTYPE_OBJECTPOINT + 97),
CURLOPT_SHARE => (CURLOPTTYPE_OBJECTPOINT + 100),
CURLOPT_ENCODING => (CURLOPTTYPE_OBJECTPOINT + 102),
CURLOPT_PRIVATE => (CURLOPTTYPE_OBJECTPOINT + 103),
CURLOPT_HTTP200ALIASES=>(CURLOPTTYPE_OBJECTPOINT +104),
CURLOPT_WRITEFUNCTION=>(CURLOPTTYPE_FUNCTIONPOINT +11),
CURLOPT_READFUNCTION=>(CURLOPTTYPE_FUNCTIONPOINT + 12),
CURLOPT_PROGRESSFUNCTION=>(CURLOPTTYPE_FUNCTIONPOINT+56),
CURLOPT_PASSWDFUNCTION=>(CURLOPTTYPE_FUNCTIONPOINT + 66),
CURLOPT_CLOSEFUNCTION=>(CURLOPTTYPE_FUNCTIONPOINT + 73),
CURLOPT_HEADERFUNCTION=>(CURLOPTTYPE_FUNCTIONPOINT + 79),
CURLOPT_DEBUGFUNCTION=>(CURLOPTTYPE_FUNCTIONPOINT + 94),
CURLOPT_LASTENTRY => (CURLOPTTYPE_FUNCTIONPOINT + 95)
);
pragma Convention(C,Curloption);
CURLOPT_WRITEDATA : constant Curloption := CURLOPT_FILE;
CURLOPT_READDATA : constant Curloption := CURLOPT_INFILE;
CURLOPT_HEADERDATA : constant Curloption := CURLOPT_WRITEHEADER;
type Curl_Http_Version is (CURL_HTTP_VERSION_NONE,
CURL_HTTP_VERSION_1_0,
CURL_HTTP_VERSION_1_1,
CURL_HTTP_VERSION_LAST);
pragma Convention(C,Curl_Http_Version);
type Curl_Netrc_Option is (CURL_NETRC_IGNORED,
CURL_NETRC_OPTIONAL,
CURL_NETRC_REQUIRED,
CURL_NETRC_LAST);
pragma Convention(C,Curl_Netrc_Option);
type Curl_Ssl_Version is (CURL_SSLVERSION_DEFAULT,
CURL_SSLVERSION_TLSv1,
CURL_SSLVERSION_SSLv2,
CURL_SSLVERSION_SSLv3,
CURL_SSLVERSION_LAST);
pragma Convention(C,Curl_Ssl_Version);
type Curl_Timecond is (CURL_TIMECOND_NONE,
CURL_TIMECOND_IFMODSINCE,
CURL_TIMECOND_IFUNMODSINCE,
CURL_TIMECOND_LASTMOD,
CURL_TIMECOND_LAST);
pragma Convention(C,Curl_Timecond);
type CURLformoption is (CURLFORM_NOTHING,
CURLFORM_COPYNAME,
CURLFORM_PTRNAME,
CURLFORM_NAMELENGTH,
CURLFORM_COPYCONTENTS,
CURLFORM_PTRCONTENTS,
CURLFORM_CONTENTSLENGTH,
CURLFORM_FILECONTENT,
CURLFORM_ARRAY,
CURLFORM_OBSOLETE,
CURLFORM_FILE,
CURLFORM_BUFFER,
CURLFORM_BUFFERPTR,
CURLFORM_BUFFERLENGTH,
CURLFORM_CONTENTTYPE,
CURLFORM_CONTENTHEADER,
CURLFORM_FILENAME,
CURLFORM_END,
CURLFORM_OBSOLETE2,
CURLFORM_LASTENTRY);
pragma Convention(C,Curlformoption);
type Curl_Forms is record
Option : CURLformoption;
Value : Chars_Ptr;
end record;
type CURLFORMcode is (CURL_FORMADD_OK,
CURL_FORMADD_MEMORY,
CURL_FORMADD_OPTION_TWICE,
CURL_FORMADD_NULL,
CURL_FORMADD_UNKNOWN_OPTION,
CURL_FORMADD_INCOMPLETE,
CURL_FORMADD_ILLEGAL_ARRAY,
CURL_FORMADD_LAST);
pragma Convention(C,Curlformcode);
function Curl_Formadd (Httppost : access Curl_Httppost_P;
Last_Post : access Curl_Httppost_P;
C1 : Curlformoption;
D1 : Chars_Ptr)
return CURLFORMcode;
function Curl_Formadd (Httppost : access Curl_Httppost_P;
Last_Post : access Curl_Httppost_P;
C1 : Curlformoption;
D1 : Long;
E1 : Curlformoption)
return CURLFORMcode;
function Curl_Formadd (Httppost : access Curl_Httppost_P;
Last_Post : access Curl_Httppost_P;
C1 : Curlformoption;
D1 : Chars_Ptr;
C2 : Curlformoption;
D2 : Chars_Ptr;
E1 : Curlformoption)
return CURLFORMcode;
function Curl_Formadd (Httppost : access Curl_Httppost_P;
Last_Post : access Curl_Httppost_P;
C1 : Curlformoption;
D1 : Chars_Ptr;
C2 : Curlformoption;
D2 : Long;
E1 : Curlformoption)
return CURLFORMcode;
function Curl_Formadd (Httppost : access Curl_Httppost_P;
Last_Post : access Curl_Httppost_P;
C1 : Curlformoption;
D1 : Long;
C2 : Curlformoption;
D2 : Long;
E1 : Curlformoption)
return CURLFORMcode;
function Curl_Formadd (Httppost : access Curl_Httppost_P;
Last_Post : access Curl_Httppost_P;
C1 : Curlformoption;
D1 : Long;
C2 : Curlformoption;
D2 : Chars_Ptr;
E1 : Curlformoption)
return CURLFORMcode;
procedure Curl_Formfree(Form : Curl_Httppost_P);
function Curl_Getenv(Variable : Chars_Ptr) return Chars_Ptr;
function Curl_Version return Chars_Ptr;
function Curl_Escape(String : Chars_Ptr;
Length : Int) return Chars_Ptr;
function Curl_Unescape(String : Chars_Ptr;
Length : Int) return Chars_Ptr;
procedure Curl_Free(P : System.Address);
function Curl_Global_Init(Flags : Long) return CURLcode;
procedure Curl_Global_Cleanup;
function Curl_Slist_Append (A1 : Curl_Slist_P;
A2 : Chars_Ptr)
return Curl_Slist_P;
procedure Curl_Slist_Free_All(A1 : Curl_Slist_P);
function Curl_Getdate(P : Chars_Ptr;
Now : Time_T_Pointer)
return Time_T;
CURLINFO_STRING : constant := 16#100000#;
CURLINFO_LONG : constant := 16#200000#;
CURLINFO_DOUBLE : constant := 16#300000#;
CURLINFO_MASK : constant := 16#0fffff#;
CURLINFO_TYPEMASK : constant := 16#f00000#;
type CURLINFO is (CURLINFO_NONE ,
CURLINFO_EFFECTIVE_URL ,
CURLINFO_CONTENT_TYPE ,
CURLINFO_PRIVATE ,
CURLINFO_HTTP_CODE ,
CURLINFO_HEADER_SIZE ,
CURLINFO_REQUEST_SIZE ,
CURLINFO_SSL_VERIFYRESULT ,
CURLINFO_FILETIME ,
CURLINFO_REDIRECT_COUNT ,
CURLINFO_TOTAL_TIME ,
CURLINFO_NAMELOOKUP_TIME ,
CURLINFO_CONNECT_TIME ,
CURLINFO_PRETRANSFER_TIME ,
CURLINFO_SIZE_UPLOAD ,
CURLINFO_SIZE_DOWNLOAD ,
CURLINFO_SPEED_DOWNLOAD ,
CURLINFO_SPEED_UPLOAD ,
CURLINFO_CONTENT_LENGTH_DOWNLOAD ,
CURLINFO_CONTENT_LENGTH_UPLOAD ,
CURLINFO_STARTTRANSFER_TIME ,
CURLINFO_REDIRECT_TIME ,
CURLINFO_LASTONE);
for CURLINFO use (CURLINFO_NONE => 0,
CURLINFO_EFFECTIVE_URL => CURLINFO_STRING + 1,
CURLINFO_CONTENT_TYPE => CURLINFO_STRING + 18,
CURLINFO_PRIVATE => CURLINFO_STRING + 21,
CURLINFO_HTTP_CODE => CURLINFO_LONG + 2,
CURLINFO_HEADER_SIZE => CURLINFO_LONG + 11,
CURLINFO_REQUEST_SIZE => CURLINFO_LONG + 12,
CURLINFO_SSL_VERIFYRESULT => CURLINFO_LONG + 13,
CURLINFO_FILETIME => CURLINFO_LONG + 14,
CURLINFO_REDIRECT_COUNT => CURLINFO_LONG + 20,
CURLINFO_TOTAL_TIME => CURLINFO_DOUBLE + 3,
CURLINFO_NAMELOOKUP_TIME => CURLINFO_DOUBLE + 4,
CURLINFO_CONNECT_TIME => CURLINFO_DOUBLE + 5,
CURLINFO_PRETRANSFER_TIME => CURLINFO_DOUBLE + 6,
CURLINFO_SIZE_UPLOAD => CURLINFO_DOUBLE + 7,
CURLINFO_SIZE_DOWNLOAD => CURLINFO_DOUBLE + 8,
CURLINFO_SPEED_DOWNLOAD => CURLINFO_DOUBLE + 9,
CURLINFO_SPEED_UPLOAD => CURLINFO_DOUBLE + 10,
CURLINFO_CONTENT_LENGTH_DOWNLOAD => CURLINFO_DOUBLE + 15,
CURLINFO_CONTENT_LENGTH_UPLOAD => CURLINFO_DOUBLE + 16,
CURLINFO_STARTTRANSFER_TIME => CURLINFO_DOUBLE + 17,
CURLINFO_REDIRECT_TIME => CURLINFO_DOUBLE + 19,
CURLINFO_LASTONE => CURLINFO_DOUBLE + 22);
pragma Convention(C,Curlinfo);
type Curl_Closepolicy is (CURLCLOSEPOLICY_NONE,
CURLCLOSEPOLICY_OLDEST,
CURLCLOSEPOLICY_LEAST_RECENTLY_USED,
CURLCLOSEPOLICY_LEAST_TRAFFIC,
CURLCLOSEPOLICY_SLOWEST,
CURLCLOSEPOLICY_CALLBACK,
CURLCLOSEPOLICY_LAST);
pragma Convention(C,Curl_Closepolicy);
CURL_GLOBAL_SSL : constant := 1;
CURL_GLOBAL_WIN32 : constant := 2;
CURL_GLOBAL_ALL : constant := CURL_GLOBAL_SSL + CURL_GLOBAL_WIN32;
CURL_GLOBAL_NOTHING : constant := 0;
CURL_GLOBAL_DEFAULT : constant := CURL_GLOBAL_ALL;
type Curl_Lock_Data is (CURL_LOCK_DATA_NONE,
CURL_LOCK_DATA_SHARE,
CURL_LOCK_DATA_COOKIE,
CURL_LOCK_DATA_DNS,
CURL_LOCK_DATA_SSL_SESSION,
CURL_LOCK_DATA_CONNECT,
CURL_LOCK_DATA_LAST);
pragma Convention(C,Curl_Lock_Data);
type curl_lock_access is (CURL_LOCK_ACCESS_NONE,
CURL_LOCK_ACCESS_SHARED,
CURL_LOCK_ACCESS_SINGLE,
CURL_LOCK_ACCESS_LAST);
pragma Convention(C,Curl_Lock_Access);
type CURLversion is (CURLVERSION_FIRST,
CURLVERSION_LAST);
pragma Convention(C,Curlversion);
CURLVERSION_NOW : constant CURLversion := CURLVERSION_FIRST;
type Curl_Version_Info_Data is record
Age : CURLversion;
Version : Chars_Ptr;
Version_Num : Unsigned;
Host : Chars_Ptr;
Features : Int;
Ssl_Version : Chars_Ptr;
Ssl_Version_Num : Long;
Libz_Version : Chars_Ptr;
Protocols : Chars_ptr;
end record;
pragma Convention(C,Curl_Version_Info_Data);
type Curl_Version_Info_Data_P is access all Curl_Version_Info_Data;
CURL_VERSION_IPV6 : constant := 1;
CURL_VERSION_KERBEROS4 : constant := 2;
CURL_VERSION_SSL : constant := 4;
CURL_VERSION_LIBZ : constant := 8;
CURL_VERSION_NTLM : constant := 16;
CURL_VERSION_GSSNEGOTIATE : constant := 32;
CURL_VERSION_DEBUG : constant := 64;
function Curl_Version_Info(A1 : CURLversion) return Curl_Version_Info_Data_P;
private
pragma Import(C,Curl_Formadd,"curl_formadd");
pragma Import(C,Curl_Formfree,"curl_formfree");
pragma Import(C,Curl_Getenv,"curl_getenv");
pragma Import(C,Curl_Version,"curl_version");
pragma Import(C,Curl_Escape,"curl_escape");
pragma Import(C,Curl_Unescape,"curl_unescape");
pragma Import(C,Curl_Free,"curl_free");
pragma Import(C,Curl_Global_Init,"curl_global_init");
pragma Import(C,Curl_Global_Cleanup,"curl_global_cleanup");
pragma Import(C,Curl_Slist_Append,"curl_slist_append");
pragma Import(C,Curl_Slist_Free_All,"curl_slist_free_all");
pragma Import(C,Curl_Getdate,"curl_getdate");
pragma Import(C,Curl_Version_Info,"curl_version_info");
end Adacurl;