summaryrefslogtreecommitdiff
path: root/protocols/Twitter/oauth/oauth_http.c
diff options
context:
space:
mode:
authorKirill Volinsky <mataes2007@gmail.com>2012-10-13 18:34:25 +0000
committerKirill Volinsky <mataes2007@gmail.com>2012-10-13 18:34:25 +0000
commit1a9f50fcbc79413ccc669349b682aa6a6ebb398b (patch)
treea7673155e97d56f5714a5f9cb3e74f941e961346 /protocols/Twitter/oauth/oauth_http.c
parent5aa2a6fdad72feeff99041bfdf17fd607a45033a (diff)
Twitter: folders restructurization
git-svn-id: http://svn.miranda-ng.org/main/trunk@1909 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
Diffstat (limited to 'protocols/Twitter/oauth/oauth_http.c')
-rw-r--r--protocols/Twitter/oauth/oauth_http.c728
1 files changed, 0 insertions, 728 deletions
diff --git a/protocols/Twitter/oauth/oauth_http.c b/protocols/Twitter/oauth/oauth_http.c
deleted file mode 100644
index 0e06b10dae..0000000000
--- a/protocols/Twitter/oauth/oauth_http.c
+++ /dev/null
@@ -1,728 +0,0 @@
-/*
- * OAuth http functions in POSIX-C.
- *
- * Copyright 2007, 2008, 2009, 2010 Robin Gareus <robin@gareus.org>
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- *
- */
-#if HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include <stdio.h>
-#include <stdarg.h>
-#include <stdlib.h>
-#include <string.h>
-
-#ifdef WIN32
-# define snprintf _snprintf
-#endif
-
-#include "xmalloc.h"
-#include "oauth.h"
-
-#define OAUTH_USER_AGENT "liboauth-agent/" VERSION
-
-#ifdef HAVE_CURL /* HTTP requests via libcurl */
-#include <curl/curl.h>
-#include <sys/stat.h>
-
-# define GLOBAL_CURL_ENVIROMENT_OPTIONS \
- if (getenv("CURLOPT_PROXYAUTH")){ \
- curl_easy_setopt(curl, CURLOPT_PROXYAUTH, CURLAUTH_ANY); \
- } \
- if (getenv("CURLOPT_SSL_VERIFYPEER")){ \
- curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, (long) atol(getenv("CURLOPT_SSL_VERIFYPEER")) ); \
- } \
- if (getenv("CURLOPT_CAINFO")){ \
- curl_easy_setopt(curl, CURLOPT_CAINFO, getenv("CURLOPT_CAINFO") ); \
- } \
- if (getenv("CURLOPT_FOLLOWLOCATION")){ \
- curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, (long) atol(getenv("CURLOPT_FOLLOWLOCATION")) ); \
- } \
- if (getenv("CURLOPT_FAILONERROR")){ \
- curl_easy_setopt(curl, CURLOPT_FAILONERROR, (long) atol(getenv("CURLOPT_FAILONERROR")) ); \
- }
-
-struct MemoryStruct {
- char *data;
- size_t size; //< bytes remaining (r), bytes accumulated (w)
-
- size_t start_size; //< only used with ..AndCall()
- void (*callback)(void*,int,size_t,size_t); //< only used with ..AndCall()
- void *callback_data; //< only used with ..AndCall()
-};
-
-static size_t
-WriteMemoryCallback(void *ptr, size_t size, size_t nmemb, void *data) {
- size_t realsize = size * nmemb;
- struct MemoryStruct *mem = (struct MemoryStruct *)data;
-
- mem->data = (char *)xrealloc(mem->data, mem->size + realsize + 1);
- if (mem->data) {
- memcpy(&(mem->data[mem->size]), ptr, realsize);
- mem->size += realsize;
- mem->data[mem->size] = 0;
- }
- return realsize;
-}
-
-static size_t
-ReadMemoryCallback(void *ptr, size_t size, size_t nmemb, void *data) {
- struct MemoryStruct *mem = (struct MemoryStruct *)data;
- size_t realsize = size * nmemb;
- if (realsize > mem->size) realsize = mem->size;
- memcpy(ptr, mem->data, realsize);
- mem->size -= realsize;
- mem->data += realsize;
- return realsize;
-}
-
-static size_t
-WriteMemoryCallbackAndCall(void *ptr, size_t size, size_t nmemb, void *data) {
- struct MemoryStruct *mem = (struct MemoryStruct *)data;
- size_t ret=WriteMemoryCallback(ptr,size,nmemb,data);
- mem->callback(mem->callback_data,0,mem->size,mem->size);
- return ret;
-}
-
-static size_t
-ReadMemoryCallbackAndCall(void *ptr, size_t size, size_t nmemb, void *data) {
- struct MemoryStruct *mem = (struct MemoryStruct *)data;
- size_t ret=ReadMemoryCallback(ptr,size,nmemb,data);
- mem->callback(mem->callback_data,1,mem->start_size-mem->size,mem->start_size);
- return ret;
-}
-
-/**
- * cURL http post function.
- * the returned string (if not NULL) needs to be freed by the caller
- *
- * @param u url to retrieve
- * @param p post parameters
- * @param customheader specify custom HTTP header (or NULL for none)
- * @return returned HTTP
- */
-char *oauth_curl_post (const char *u, const char *p, const char *customheader) {
- CURL *curl;
- CURLcode res;
- struct curl_slist *slist=NULL;
-
- struct MemoryStruct chunk;
- chunk.data=NULL;
- chunk.size = 0;
-
- curl = curl_easy_init();
- if(!curl) return NULL;
- curl_easy_setopt(curl, CURLOPT_URL, u);
- curl_easy_setopt(curl, CURLOPT_POSTFIELDS, p);
- curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void *)&chunk);
- curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteMemoryCallback);
- if (customheader) {
- slist = curl_slist_append(slist, customheader);
- curl_easy_setopt(curl, CURLOPT_HTTPHEADER, slist);
- }
- curl_easy_setopt(curl, CURLOPT_USERAGENT, OAUTH_USER_AGENT);
-#ifdef OAUTH_CURL_TIMEOUT
- curl_easy_setopt(curl, CURLOPT_TIMEOUT, OAUTH_CURL_TIMEOUT);
- curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1);
-#endif
- GLOBAL_CURL_ENVIROMENT_OPTIONS;
- res = curl_easy_perform(curl);
- curl_slist_free_all(slist);
- if (res) {
- return NULL;
- }
-
- curl_easy_cleanup(curl);
- return (chunk.data);
-}
-
-/**
- * cURL http get function.
- * the returned string (if not NULL) needs to be freed by the caller
- *
- * @param u url to retrieve
- * @param q optional query parameters
- * @param customheader specify custom HTTP header (or NULL for none)
- * @return returned HTTP
- */
-char *oauth_curl_get (const char *u, const char *q, const char *customheader) {
- CURL *curl;
- CURLcode res;
- struct curl_slist *slist=NULL;
- char *t1=NULL;
- struct MemoryStruct chunk;
-
- if (q) {
- t1=(char*)xmalloc(sizeof(char)*(strlen(u)+strlen(q)+2));
- strcpy(t1,u); strcat(t1,"?"); strcat(t1,q);
- }
-
- chunk.data=NULL;
- chunk.size = 0;
-
- curl = curl_easy_init();
- if(!curl) return NULL;
- curl_easy_setopt(curl, CURLOPT_URL, q?t1:u);
- curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void *)&chunk);
- curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteMemoryCallback);
- if (customheader) {
- slist = curl_slist_append(slist, customheader);
- curl_easy_setopt(curl, CURLOPT_HTTPHEADER, slist);
- }
-#if 0 // TODO - support request methods..
- if (0)
- curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "HEAD");
- else if (0)
- curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "DELETE");
-#endif
- curl_easy_setopt(curl, CURLOPT_USERAGENT, OAUTH_USER_AGENT);
-#ifdef OAUTH_CURL_TIMEOUT
- curl_easy_setopt(curl, CURLOPT_TIMEOUT, OAUTH_CURL_TIMEOUT);
- curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1);
-#endif
- GLOBAL_CURL_ENVIROMENT_OPTIONS;
- res = curl_easy_perform(curl);
- curl_slist_free_all(slist);
- if (q) free(t1);
- curl_easy_cleanup(curl);
-
- if (res) {
- return NULL;
- }
- return (chunk.data);
-}
-
-/**
- * cURL http post raw data from file.
- * the returned string needs to be freed by the caller
- *
- * @param u url to retrieve
- * @param fn filename of the file to post along
- * @param len length of the file in bytes. set to '0' for autodetection
- * @param customheader specify custom HTTP header (or NULL for default)
- * @return returned HTTP or NULL on error
- */
-char *oauth_curl_post_file (const char *u, const char *fn, size_t len, const char *customheader) {
- CURL *curl;
- CURLcode res;
- struct curl_slist *slist=NULL;
- struct MemoryStruct chunk;
- FILE *f;
-
- chunk.data=NULL;
- chunk.size=0;
-
- if (customheader)
- slist = curl_slist_append(slist, customheader);
- else
- slist = curl_slist_append(slist, "Content-Type: image/jpeg;");
-
- if (!len) {
- struct stat statbuf;
- if (stat(fn, &statbuf) == -1) return(NULL);
- len = statbuf.st_size;
- }
-
- f = fopen(fn,"r");
- if (!f) return NULL;
-
- curl = curl_easy_init();
- if(!curl) return NULL;
- curl_easy_setopt(curl, CURLOPT_URL, u);
- curl_easy_setopt(curl, CURLOPT_POST, 1);
- curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, len);
- curl_easy_setopt(curl, CURLOPT_HTTPHEADER, slist);
- curl_easy_setopt(curl, CURLOPT_READDATA, f);
- curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void *)&chunk);
- curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteMemoryCallback);
- curl_easy_setopt(curl, CURLOPT_USERAGENT, OAUTH_USER_AGENT);
-#ifdef OAUTH_CURL_TIMEOUT
- curl_easy_setopt(curl, CURLOPT_TIMEOUT, OAUTH_CURL_TIMEOUT);
- curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1);
-#endif
- GLOBAL_CURL_ENVIROMENT_OPTIONS;
- res = curl_easy_perform(curl);
- curl_slist_free_all(slist);
- if (res) {
- // error
- return NULL;
- }
- fclose(f);
-
- curl_easy_cleanup(curl);
- return (chunk.data);
-}
-
-/**
- * http send raw data, with callback.
- * the returned string needs to be freed by the caller
- *
- * more documentation in oauth.h
- *
- * @param u url to retrieve
- * @param data data to post along
- * @param len length of the file in bytes. set to '0' for autodetection
- * @param customheader specify custom HTTP header (or NULL for default)
- * @param callback specify the callback function
- * @param callback_data specify data to pass to the callback function
- * @return returned HTTP reply or NULL on error
- */
-char *oauth_curl_send_data_with_callback (const char *u, const char *data, size_t len, const char *customheader, void (*callback)(void*,int,size_t,size_t), void *callback_data, const char *httpMethod) {
- CURL *curl;
- CURLcode res;
- struct curl_slist *slist=NULL;
- struct MemoryStruct chunk;
- struct MemoryStruct rdnfo;
-
- chunk.data=NULL;
- chunk.size=0;
- chunk.start_size=0;
- chunk.callback=callback;
- chunk.callback_data=callback_data;
- rdnfo.data=(char *)data;
- rdnfo.size=len;
- rdnfo.start_size=len;
- rdnfo.callback=callback;
- rdnfo.callback_data=callback_data;
-
- if (customheader)
- slist = curl_slist_append(slist, customheader);
- else
- slist = curl_slist_append(slist, "Content-Type: image/jpeg;");
-
- curl = curl_easy_init();
- if(!curl) return NULL;
- curl_easy_setopt(curl, CURLOPT_URL, u);
- curl_easy_setopt(curl, CURLOPT_POST, 1);
- if (httpMethod) curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, httpMethod);
- curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, len);
- curl_easy_setopt(curl, CURLOPT_HTTPHEADER, slist);
- curl_easy_setopt(curl, CURLOPT_READDATA, (void *)&rdnfo);
- if (callback)
- curl_easy_setopt(curl, CURLOPT_READFUNCTION, ReadMemoryCallbackAndCall);
- else
- curl_easy_setopt(curl, CURLOPT_READFUNCTION, ReadMemoryCallback);
- curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void *)&chunk);
- if (callback)
- curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteMemoryCallbackAndCall);
- else
- curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteMemoryCallback);
- curl_easy_setopt(curl, CURLOPT_USERAGENT, OAUTH_USER_AGENT);
-#ifdef OAUTH_CURL_TIMEOUT
- curl_easy_setopt(curl, CURLOPT_TIMEOUT, OAUTH_CURL_TIMEOUT);
- curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1);
-#endif
- GLOBAL_CURL_ENVIROMENT_OPTIONS;
- res = curl_easy_perform(curl);
- curl_slist_free_all(slist);
- if (res) {
- // error
- return NULL;
- }
-
- curl_easy_cleanup(curl);
- return (chunk.data);
-}
-
-/**
- * http post raw data.
- * the returned string needs to be freed by the caller
- *
- * more documentation in oauth.h
- *
- * @param u url to retrieve
- * @param data data to post along
- * @param len length of the file in bytes. set to '0' for autodetection
- * @param customheader specify custom HTTP header (or NULL for default)
- * @return returned HTTP reply or NULL on error
- */
-char *oauth_curl_post_data(const char *u, const char *data, size_t len, const char *customheader) {
- return oauth_curl_send_data_with_callback(u, data, len, customheader, NULL, NULL, NULL);
-}
-
-char *oauth_curl_send_data (const char *u, const char *data, size_t len, const char *customheader, const char *httpMethod) {
- return oauth_curl_send_data_with_callback(u, data, len, customheader, NULL, NULL, httpMethod);
-}
-
-char *oauth_curl_post_data_with_callback (const char *u, const char *data, size_t len, const char *customheader, void (*callback)(void*,int,size_t,size_t), void *callback_data) {
- return oauth_curl_send_data_with_callback(u, data, len, customheader, callback, callback_data, NULL);
-}
-
-#endif // libcURL.
-
-
-#ifdef HAVE_SHELL_CURL /* HTTP requests via command-line curl */
-
-// command line presets and ENV variable name
-#define _OAUTH_ENV_HTTPCMD "OAUTH_HTTP_CMD"
-#define _OAUTH_ENV_HTTPGET "OAUTH_HTTP_GET_CMD"
-
-#ifdef OAUTH_CURL_TIMEOUT
-
-#define cpxstr(s) cpstr(s)
-#define cpstr(s) #s
-
-#ifndef _OAUTH_DEF_HTTPCMD
-# define _OAUTH_DEF_HTTPCMD "curl -sA '"OAUTH_USER_AGENT"' -m "cpxstr(OAUTH_CURL_TIMEOUT)" -d '%p' '%u' "
-//alternative: "wget -q -U 'liboauth-agent/0.1' --post-data='%p' '%u' "
-#endif
-
-#ifndef _OAUTH_DEF_HTTPGET
-# define _OAUTH_DEF_HTTPGET "curl -sA '"OAUTH_USER_AGENT"' -m "cpxstr(OAUTH_CURL_TIMEOUT)" '%u' "
-//alternative: "wget -q -U 'liboauth-agent/0.1' '%u' "
-#endif
-
-#else // no timeout
-
-#ifndef _OAUTH_DEF_HTTPCMD
-# define _OAUTH_DEF_HTTPCMD "curl -sA '"OAUTH_USER_AGENT"' -d '%p' '%u' "
-//alternative: "wget -q -U 'liboauth-agent/0.1' --post-data='%p' '%u' "
-#endif
-
-#ifndef _OAUTH_DEF_HTTPGET
-# define _OAUTH_DEF_HTTPGET "curl -sA '"OAUTH_USER_AGENT"' '%u' "
-//alternative: "wget -q -U 'liboauth-agent/0.1' '%u' "
-#endif
-
-#endif
-
-#include <stdio.h>
-
-/**
- * escape URL for use in String Quotes (aka shell single quotes).
- * the returned string needs to be free()d by the calling function
- *
- * WARNING: this function only escapes single-quotes (')
- *
- *
- * RFC2396 defines the following
- * reserved = ";" | "/" | "?" | ":" | "@" | "&" | "=" | "+" | "$" | ","
- * besides alphanum the following are allowed as unreserved:
- * mark = "-" | "_" | "." | "!" | "~" | "*" | "'" | "(" | ")"
- *
- * checking `echo '-_.!~*()'` it seems we
- * just need to escape the tick (') itself from "'" to "'\''"
- *
- * In C shell, the "!" character may need a backslash before it.
- * It depends on the characters next to it. If it is surrounded by spaces,
- * you don't need to use a backslash.
- * (here: we'd always need to escape it for c shell)
- * @todo: escape '!' for c-shell curl/wget commandlines
- *
- * @param cmd URI string or parameter to be escaped
- * @return escaped parameter
- */
-char *oauth_escape_shell (const char *cmd) {
- char *esc = xstrdup(cmd);
- char *tmp = esc;
- int idx;
- while ((tmp=strchr(tmp,'\''))) {
- idx = tmp-esc;
- esc=(char*)xrealloc(esc,(strlen(esc)+5)*sizeof(char));
- memmove(esc+idx+4,esc+idx+1, strlen(esc+idx));
- esc[idx+1]='\\'; esc[idx+2]='\''; esc[idx+3]='\'';
- tmp=esc+(idx+4);
- }
-
-// TODO escape '!' if CSHELL ?!
-
- return esc;
-}
-
-/**
- * execute command via shell and return it's output.
- * This is used to call 'curl' or 'wget'.
- * the command is uses <em>as is</em> and needs to be propery escaped.
- *
- * @param cmd the commandline to execute
- * @return stdout string that needs to be freed or NULL if there's no output
- */
-char *oauth_exec_shell (const char *cmd) {
-#ifdef DEBUG_OAUTH
- printf("DEBUG: executing: %s\n",cmd);
-#endif
- FILE *in = popen (cmd, "r");
- size_t len = 0;
- size_t alloc = 0;
- char *data = NULL;
- int rcv = 1;
- while (in && rcv > 0 && !feof(in)) {
- alloc +=1024;
- data = (char*)xrealloc(data, alloc * sizeof(char));
- rcv = fread(data + (alloc-1024), sizeof(char), 1024, in);
- len += rcv;
- }
- pclose(in);
-#ifdef DEBUG_OAUTH
- printf("DEBUG: read %i bytes\n",len);
-#endif
- data[len]=0;
-#ifdef DEBUG_OAUTH
- if (data) printf("DEBUG: return: %s\n",data);
- else printf("DEBUG: NULL data\n");
-#endif
- return (data);
-}
-
-/**
- * send POST via a command line HTTP client, wait for it to finish
- * and return the content of the reply. requires a command-line HTTP client
- *
- * see \ref oauth_http_post
- *
- * @param u url to query
- * @param p postargs to send along with the HTTP request.
- * @return In case of an error NULL is returned; otherwise a pointer to the
- * replied content from HTTP server. latter needs to be freed by caller.
- */
-char *oauth_exec_post (const char *u, const char *p) {
- char cmd[BUFSIZ];
- char *t1,*t2;
- char *cmdtpl = getenv(_OAUTH_ENV_HTTPCMD);
- if (!cmdtpl) cmdtpl = xstrdup (_OAUTH_DEF_HTTPCMD);
- else cmdtpl = xstrdup (cmdtpl); // clone getenv() string.
-
- // add URL and post param - error if no '%p' or '%u' present in definition
- t1=strstr(cmdtpl, "%p");
- t2=strstr(cmdtpl, "%u");
- if (!t1 || !t2) {
- fprintf(stderr, "\nliboauth: invalid HTTP command. set the '%s' environment variable.\n\n",_OAUTH_ENV_HTTPCMD);
- return(NULL);
- }
- // TODO: check if there are exactly two '%' in cmdtpl
- *(++t1)= 's'; *(++t2)= 's';
- if (t1>t2) {
- t1=oauth_escape_shell(u);
- t2=oauth_escape_shell(p);
- } else {
- t1=oauth_escape_shell(p);
- t2=oauth_escape_shell(u);
- }
- snprintf(cmd, BUFSIZ, cmdtpl, t1, t2);
- free(cmdtpl);
- free(t1); free(t2);
- return oauth_exec_shell(cmd);
-}
-
-/**
- * send GET via a command line HTTP client
- * and return the content of the reply..
- * requires a command-line HTTP client.
- *
- * Note: u and q are just concatenated with a '?' in between unless q is NULL. in which case only u will be used.
- *
- * see \ref oauth_http_get
- *
- * @param u base url to get
- * @param q query string to send along with the HTTP request.
- * @return In case of an error NULL is returned; otherwise a pointer to the
- * replied content from HTTP server. latter needs to be freed by caller.
- */
-char *oauth_exec_get (const char *u, const char *q) {
- char cmd[BUFSIZ];
- char *cmdtpl, *t1, *e1;
-
- if (!u) return (NULL);
-
- cmdtpl = getenv(_OAUTH_ENV_HTTPGET);
- if (!cmdtpl) cmdtpl = xstrdup (_OAUTH_DEF_HTTPGET);
- else cmdtpl = xstrdup (cmdtpl); // clone getenv() string.
-
- // add URL and post param - error if no '%p' or '%u' present in definition
- t1=strstr(cmdtpl, "%u");
- if (!t1) {
- fprintf(stderr, "\nliboauth: invalid HTTP command. set the '%s' environment variable.\n\n",_OAUTH_ENV_HTTPGET);
- return(NULL);
- }
- *(++t1)= 's';
-
- e1 = oauth_escape_shell(u);
- if (q) {
- char *e2;
- e2 = oauth_escape_shell(q);
- t1=(char*)xmalloc(sizeof(char)*(strlen(e1)+strlen(e2)+2));
- strcpy(t1,e1); strcat(t1,"?"); strcat(t1,e2);
- free(e2);
- }
- snprintf(cmd, BUFSIZ, cmdtpl, q?t1:e1);
- free(cmdtpl);
- free(e1);
- if (q) free(t1);
- return oauth_exec_shell(cmd);
-}
-#endif // command-line curl.
-
-/* wrapper functions */
-
-/**
- * do a HTTP GET request, wait for it to finish
- * and return the content of the reply.
- * (requires libcurl or a command-line HTTP client)
- *
- * more documentation in oauth.h
- *
- * @param u base url to get
- * @param q query string to send along with the HTTP request or NULL.
- * @return In case of an error NULL is returned; otherwise a pointer to the
- * replied content from HTTP server. latter needs to be freed by caller.
- */
-char *oauth_http_get (const char *u, const char *q) {
-#ifdef HAVE_CURL
- return oauth_curl_get(u,q,NULL);
-#elif defined(HAVE_SHELL_CURL)
- return oauth_exec_get(u,q);
-#else
- return NULL;
-#endif
-}
-
-/**
- * do a HTTP GET request, wait for it to finish
- * and return the content of the reply.
- * (requires libcurl)
- *
- * @param u base url to get
- * @param q query string to send along with the HTTP request or NULL.
- * @param customheader specify custom HTTP header (or NULL for none)
- * @return In case of an error NULL is returned; otherwise a pointer to the
- * replied content from HTTP server. latter needs to be freed by caller.
- */
-char *oauth_http_get2 (const char *u, const char *q, const char *customheader) {
-#ifdef HAVE_CURL
- return oauth_curl_get(u,q,customheader);
-#else
- return NULL;
-#endif
-}
-
-/**
- * do a HTTP POST request, wait for it to finish
- * and return the content of the reply.
- * (requires libcurl or a command-line HTTP client)
- *
- * more documentation in oauth.h
- *
- * @param u url to query
- * @param p postargs to send along with the HTTP request.
- * @return In case of an error NULL is returned; otherwise a pointer to the
- * replied content from HTTP server. latter needs to be freed by caller.
- */
-char *oauth_http_post (const char *u, const char *p) {
-#ifdef HAVE_CURL
- return oauth_curl_post(u,p,NULL);
-#elif defined(HAVE_SHELL_CURL)
- return oauth_exec_post(u,p);
-#else
- return NULL;
-#endif
-}
-
-
-/**
- * do a HTTP POST request, wait for it to finish
- * and return the content of the reply.
- * (requires libcurl)
- *
- * more documentation in oauth.h
- *
- * @param u url to query
- * @param p postargs to send along with the HTTP request.
- * @param customheader specify custom HTTP header (or NULL for none)
- * @return In case of an error NULL is returned; otherwise a pointer to the
- * replied content from HTTP server. latter needs to be freed by caller.
- */
-char *oauth_http_post2 (const char *u, const char *p, const char *customheader) {
-#ifdef HAVE_CURL
- return oauth_curl_post(u,p,customheader);
-#else
- return NULL;
-#endif
-}
-
-/**
- * http post raw data from file.
- * the returned string needs to be freed by the caller
- *
- * more documentation in oauth.h
- *
- * @param u url to retrieve
- * @param fn filename of the file to post along
- * @param len length of the file in bytes. set to '0' for autodetection
- * @param customheader specify custom HTTP header (or NULL for default)
- * @return returned HTTP reply or NULL on error
- */
-char *oauth_post_file (const char *u, const char *fn, const size_t len, const char *customheader){
-#ifdef HAVE_CURL
- return oauth_curl_post_file (u, fn, len, customheader);
-#elif defined(HAVE_SHELL_CURL)
- fprintf(stderr, "\nliboauth: oauth_post_file requires libcurl. libcurl is not available.\n\n");
- return NULL;
-#else
- return NULL;
-#endif
-}
-
-/**
- * http post raw data.
- * the returned string needs to be freed by the caller
- *
- * more documentation in oauth.h
- *
- * @param u url to retrieve
- * @param data data to post along
- * @param len length of the file in bytes. set to '0' for autodetection
- * @param customheader specify custom HTTP header (or NULL for default)
- * @return returned HTTP reply or NULL on error
- */
-char *oauth_post_data (const char *u, const char *data, size_t len, const char *customheader) {
-#ifdef HAVE_CURL
- return oauth_curl_post_data (u, data, len, customheader);
-#elif defined(HAVE_SHELL_CURL)
- fprintf(stderr, "\nliboauth: oauth_post_file requires libcurl. libcurl is not available.\n\n");
- return NULL;
-#else
- return (NULL);
-#endif
-}
-
-char *oauth_send_data (const char *u, const char *data, size_t len, const char *customheader, const char *httpMethod) {
-#ifdef HAVE_CURL
- return oauth_curl_send_data (u, data, len, customheader, httpMethod);
-#elif defined(HAVE_SHELL_CURL)
- fprintf(stderr, "\nliboauth: oauth_send_file requires libcurl. libcurl is not available.\n\n");
- return NULL;
-#else
- return (NULL);
-#endif
-}
-
-char *oauth_post_data_with_callback (const char *u, const char *data, size_t len, const char *customheader, void (*callback)(void*,int,size_t,size_t), void *callback_data) {
-#ifdef HAVE_CURL
- return oauth_curl_post_data_with_callback(u, data, len, customheader, callback, callback_data);
-#elif defined(HAVE_SHELL_CURL)
- fprintf(stderr, "\nliboauth: oauth_post_data_with_callback requires libcurl.\n\n");
- return NULL;
-#else
- return (NULL);
-#endif
-}
-/* vi:set ts=8 sts=2 sw=2: */