From e405b28efceb0865910c3821d92f6f3cb9a6f0be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=A6=8C=20=EA=A6=AB=EA=A6=B6=20=EA=A6=8F=EA=A7=80?= =?UTF-8?q?=EA=A6=A6=EA=A6=BF=20=EA=A6=A7=20=EA=A6=AE=20=EA=A6=91=20?= =?UTF-8?q?=EA=A6=A9=20=EA=A6=AD=EA=A7=80?= Date: Mon, 16 Sep 2019 20:43:28 +0800 Subject: Product related structures and functions --- icclient/product.h | 27 +++++++++++++++++++++++++++ icclient/request.h | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 77 insertions(+) create mode 100644 icclient/product.h create mode 100644 icclient/request.h (limited to 'icclient') diff --git a/icclient/product.h b/icclient/product.h new file mode 100644 index 0000000..f912b17 --- /dev/null +++ b/icclient/product.h @@ -0,0 +1,27 @@ +#ifndef ICCLIENT_PRODUCT_H +#define ICCLIENT_PRODUCT_H + +struct ic_product { + char *sku, *description, *comment, *image; + double price; +}; + +struct ic_catalog { + unsigned int length; + struct ic_product *products[]; +}; + +#ifdef __cplusplus +extern "C" { +#endif + + void icclient_product_all(struct ic_catalog **catalogptr + , size_t (*callback)(void *contents, size_t size + , size_t nmemb, void *userdata)); + void rtclient_product_freecatalog(struct ic_catalog *catalog); + +#ifdef __cplusplus +} +#endif + +#endif // ICCLIENT_PRODUCT_H diff --git a/icclient/request.h b/icclient/request.h new file mode 100644 index 0000000..192a154 --- /dev/null +++ b/icclient/request.h @@ -0,0 +1,50 @@ +#ifndef ICCLIENT_REQUEST_H +#define ICCLIENT_REQUEST_H + +#ifdef DEBUG +#ifdef ANDROID +#include +#else +#include +#endif // ANDROID +#endif // DEBUG +#include +#include + +extern CURL *curl; +extern char *server_url; + +inline void request(const char *path + , size_t (*writefunction)(void *, size_t, size_t, void *) + , void *writedata, struct curl_httppost *post) +{ + char url[strlen(server_url) + strlen(path) + 1]; + sprintf(url, "%s%s", server_url, path); + curl_easy_setopt(curl, CURLOPT_URL, url); + curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writefunction); + if (writedata) + curl_easy_setopt(curl, CURLOPT_WRITEDATA, writedata); + else + curl_easy_setopt(curl, CURLOPT_WRITEDATA, stdout); + if (post) + curl_easy_setopt(curl, CURLOPT_HTTPPOST, post); + else + curl_easy_setopt(curl, CURLOPT_HTTPGET, 1L); + +#ifdef DEBUG + CURLcode res = +#endif // DEBUG + curl_easy_perform(curl); +#ifdef DEBUG + if (res != CURLE_OK) { + const char *error = curl_easy_strerror(res); +#ifdef ANDROID + __android_log_print(ANDROID_LOG_ERROR, "libicclient", "%s: %s" + , __func__, error); +#else + fprintf(stderr, "%s: %s\n", __func__, error); +#endif // ANDROID + } +#endif // DEBUG +} +#endif // ICCLIENT_REQUEST_H -- cgit v1.2.3