/** * The curl class is a JNI wrapper for libcurl. Please bear with me, I'm no * true java dude (yet). Improve what you think is bad and send me the * updates! * daniel@haxx.se * * This is meant as a raw, crude and low-level interface to libcurl. If you * want fancy stuff, build upon this. */ public class CurlGlue { // start of imported generated list, make a new list with // define2java.pl on demand public static final int CURLOPT_NOTHING = 0; public static final int CURLOPT_FILE = 10001; public static final int CURLOPT_URL = 10002; public static final int CURLOPT_PORT = 3; public static final int CURLOPT_PROXY = 10004; public static final int CURLOPT_USERPWD = 10005; public static final int CURLOPT_PROXYUSERPWD = 10006; public static final int CURLOPT_RANGE = 10007; public static final int CURLOPT_INFILE = 10009; public static final int CURLOPT_ERRORBUFFER = 10010; public static final int CURLOPT_WRITEFUNCTION = 20011; public static final int CURLOPT_READFUNCTION = 20012; public static final int CURLOPT_TIMEOUT = 13; public static final int CURLOPT_INFILESIZE = 14; public static final int CURLOPT_POSTFIELDS = 10015; public static final int CURLOPT_REFERER = 10016; public static final int CURLOPT_FTPPORT = 10017; public static final int CURLOPT_USERAGENT = 10018; public static final int CURLOPT_LOW_SPEED_LIMIT = 19; public static final int CURLOPT_LOW_SPEED_TIME = 20; public static final int CURLOPT_RESUME_FROM = 21; public static final int CURLOPT_COOKIE = 10022; public static final int CURLOPT_HTTPHEADER = 10023; public static final int CURLOPT_HTTPPOST = 10024; public static final int CURLOPT_SSLCERT = 10025; public static final int CURLOPT_SSLCERTPASSWD = 10026; public static final int CURLOPT_CRLF = 27; public static final int CURLOPT_QUOTE = 10028; public static final int CURLOPT_WRITEHEADER = 10029; public static final int CURLOPT_COOKIEFILE = 10031; public static final int CURLOPT_SSLVERSION = 32; public static final int CURLOPT_TIMECONDITION = 33; public static final int CURLOPT_TIMEVALUE = 34; public static final int CURLOPT_HTTPREQUEST = 10035; public static final int CURLOPT_CUSTOMREQUEST = 10036; public static final int CURLOPT_STDERR = 10037; public static final int CURLOPT_POSTQUOTE = 10039; public static final int CURLOPT_WRITEINFO = 10040; public static final int CURLOPT_VERBOSE = 41; public static final int CURLOPT_HEADER = 42; public static final int CURLOPT_NOPROGRESS = 43; public static final int CURLOPT_NOBODY = 44; public static final int CURLOPT_FAILONERROR = 45; public static final int CURLOPT_UPLOAD = 46; public static final int CURLOPT_POST = 47; public static final int CURLOPT_FTPLISTONLY = 48; public static final int CURLOPT_FTPAPPEND = 50; public static final int CURLOPT_NETRC = 51; public static final int CURLOPT_FOLLOWLOCATION = 52; public static final int CURLOPT_FTPASCII = 53; public static final int CURLOPT_TRANSFERTEXT = 53; public static final int CURLOPT_PUT = 54; public static final int CURLOPT_MUTE = 55; public static final int CURLOPT_PROGRESSFUNCTION = 20056; public static final int CURLOPT_PROGRESSDATA = 10057; public static final int CURLOPT_AUTOREFERER = 58; public static final int CURLOPT_PROXYPORT = 59; public static final int CURLOPT_POSTFIELDSIZE = 60; public static final int CURLOPT_HTTPPROXYTUNNEL = 61; public static final int CURLOPT_INTERFACE = 10062; public static final int CURLOPT_KRB4LEVEL = 10063; public static final int CURLOPT_SSL_VERIFYPEER = 64; public static final int CURLOPT_CAINFO = 10065; public static final int CURLOPT_PASSWDFUNCTION = 20066; public static final int CURLOPT_PASSWDDATA = 10067; public static final int CURLOPT_MAXREDIRS = 68; public static final int CURLOPT_FILETIME = 10069; public static final int CURLOPT_TELNETOPTIONS = 10070; public static final int CURLOPT_MAXCONNECTS = 71; public static final int CURLOPT_CLOSEPOLICY = 72; public static final int CURLOPT_CLOSEFUNCTION = 20073; public static final int CURLOPT_FRESH_CONNECT = 74; public static final int CURLOPT_FORBID_REUSE = 75; public static final int CURLOPT_RANDOM_FILE = 10076; public static final int CURLOPT_EGDSOCKET = 10077; public static final int CURLOPT_CONNECTTIMEOUT = 78; public static final int CURLOPT_HEADERFUNCTION = 20079; // end of generated list public CurlGlue() { javacurl_handle = jni_init(); } public void finalize() { jni_cleanup(javacurl_handle); } private int javacurl_handle; /* constructor and destructor for the libcurl handle */ private native int jni_init(); private native void jni_cleanup(int javacurl_handle); private native synchronized int jni_perform(int javacurl_handle); // Instead of varargs, we have different functions for each // kind of type setopt() can take private native int jni_setopt(int libcurl, int option, String value); private native int jni_setopt(int libcurl, int option, int value); private native int jni_setopt(int libcurl, int option, CurlWrite value); public native int getinfo(); public int perform() { return jni_perform(javacurl_handle); } public int setopt(int option, int value) { return jni_setopt(javacurl_handle, option, value); } public int setopt(int option, String value) { return jni_setopt(javacurl_handle, option, value); } public int setopt(int option, CurlWrite value) { return jni_setopt(javacurl_handle, option, value); } static { System.loadLibrary("javacurl"); } }