diff options
author | Iru Cai <mytbk920423@gmail.com> | 2018-06-27 23:34:21 +0800 |
---|---|---|
committer | Iru Cai <mytbk920423@gmail.com> | 2018-06-28 00:16:51 +0800 |
commit | b0e376b6ba1891fcf749d22095c4f79a843a5d0f (patch) | |
tree | 5008f76cf09bbda7b979180997a8cb3e142f0899 /curl_util.c | |
parent | e6d9edc048efb5b19d79bbe7871b2ff779d72311 (diff) | |
download | matrix-curl-b0e376b6ba1891fcf749d22095c4f79a843a5d0f.tar.xz |
util.c: string builder
and rename util.{c,h} to curl_util
Diffstat (limited to 'curl_util.c')
-rw-r--r-- | curl_util.c | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/curl_util.c b/curl_util.c new file mode 100644 index 0000000..5d1b21a --- /dev/null +++ b/curl_util.c @@ -0,0 +1,36 @@ +#include "curl_util.h" + +static size_t get_json_callback(void *contents, size_t size, size_t nmemb, void *userp) +{ + size_t realsize = size * nmemb; + + json_tokener *tok = json_tokener_new(); + if (userp != NULL) + *((json_object **)userp) = json_tokener_parse_ex(tok, contents, realsize); + + json_tokener_free(tok); + + return realsize; +} + +CURLcode +_curl_get(CURL *curl, const char *url, json_object **resp) +{ + curl_easy_setopt(curl, CURLOPT_URL, url); + curl_easy_setopt(curl, CURLOPT_HTTPGET, 1L); + curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, get_json_callback); + curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void *)resp); + + return curl_easy_perform(curl); +} + +CURLcode +_curl_post(CURL *curl, const char *url, const char *postdata, json_object **resp) +{ + curl_easy_setopt(curl, CURLOPT_URL, url); + curl_easy_setopt(curl, CURLOPT_POSTFIELDS, postdata); + curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, get_json_callback); + curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void *)resp); + + return curl_easy_perform(curl); +} |