diff options
author | Daniel Stenberg <daniel@haxx.se> | 2003-10-07 14:43:48 +0000 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2003-10-07 14:43:48 +0000 |
commit | f52534522ce447afa6556079ff534a6d859397ae (patch) | |
tree | c7d7b0b8f063951686c9348c1f387f04af9c7652 /tests/libtest | |
parent | 0b615afac91d1443f431be63d7181f777dd2f730 (diff) |
test case 508 added to test callback-based POST
Diffstat (limited to 'tests/libtest')
-rw-r--r-- | tests/libtest/Makefile.am | 7 | ||||
-rw-r--r-- | tests/libtest/lib508.c | 67 |
2 files changed, 73 insertions, 1 deletions
diff --git a/tests/libtest/Makefile.am b/tests/libtest/Makefile.am index 99d7d8cf5..52f9e6e57 100644 --- a/tests/libtest/Makefile.am +++ b/tests/libtest/Makefile.am @@ -11,7 +11,8 @@ LIBDIR = ../../lib SUPPORTFILES = first.c test.h # here are all tools used for running libcurl tests -noinst_PROGRAMS = lib500 lib501 lib502 lib503 lib504 lib505 lib506 lib507 +noinst_PROGRAMS = lib500 lib501 lib502 lib503 lib504 lib505 lib506 lib507 \ + lib508 lib500_SOURCES = lib500.c $(SUPPORTFILES) lib500_LDADD = $(LIBDIR)/libcurl.la @@ -44,3 +45,7 @@ lib506_DEPENDENCIES = $(LIBDIR)/libcurl.la lib507_SOURCES = lib507.c $(SUPPORTFILES) lib507_LDADD = $(LIBDIR)/libcurl.la lib507_DEPENDENCIES = $(LIBDIR)/libcurl.la + +lib508_SOURCES = lib508.c $(SUPPORTFILES) +lib508_LDADD = $(LIBDIR)/libcurl.la +lib508_DEPENDENCIES = $(LIBDIR)/libcurl.la diff --git a/tests/libtest/lib508.c b/tests/libtest/lib508.c new file mode 100644 index 000000000..e6798da2e --- /dev/null +++ b/tests/libtest/lib508.c @@ -0,0 +1,67 @@ +#include "test.h" + +static char data[]="this is what we post to the silly web server\n"; + +struct WriteThis { + char *readptr; + int sizeleft; +}; + +static size_t read_callback(void *ptr, size_t size, size_t nmemb, void *userp) +{ + struct WriteThis *pooh = (struct WriteThis *)userp; + + if(size*nmemb < 1) + return 0; + + if(pooh->sizeleft) { + *(char *)ptr = pooh->readptr[0]; /* copy one single byte */ + pooh->readptr++; /* advance pointer */ + pooh->sizeleft--; /* less data left */ + return 1; /* we return 1 byte at a time! */ + } + + return -1; /* no more data left to deliver */ +} + +CURLcode test(char *URL) +{ + CURL *curl; + CURLcode res=CURLE_OK; + + struct WriteThis pooh; + + pooh.readptr = data; + pooh.sizeleft = strlen(data); + + curl = curl_easy_init(); + if(curl) { + /* First set the URL that is about to receive our POST. */ + curl_easy_setopt(curl, CURLOPT_URL, URL); + + /* Now specify we want to POST data */ + curl_easy_setopt(curl, CURLOPT_POST, TRUE); + + /* Set the expected POST size */ + curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, pooh.sizeleft); + + /* we want to use our own read function */ + curl_easy_setopt(curl, CURLOPT_READFUNCTION, read_callback); + + /* pointer to pass to our read function */ + curl_easy_setopt(curl, CURLOPT_INFILE, &pooh); + + /* get verbose debug output please */ + curl_easy_setopt(curl, CURLOPT_VERBOSE, 1); + + /* include headers in the output */ + curl_easy_setopt(curl, CURLOPT_HEADER, TRUE); + + /* Perform the request, res will get the return code */ + res = curl_easy_perform(curl); + + /* always cleanup */ + curl_easy_cleanup(curl); + } + return res; +} |