summaryrefslogtreecommitdiff
path: root/catalog.c
diff options
context:
space:
mode:
authorꦌꦫꦶꦏ꧀ꦦꦿꦧꦮꦑꦩꦭ꧀ <erik@darapsa.co.id>2021-06-13 08:20:19 +0800
committerꦌꦫꦶꦏ꧀ꦦꦿꦧꦮꦑꦩꦭ꧀ <erik@darapsa.co.id>2021-06-13 08:20:19 +0800
commit0a6e2943843ca894abc562ba98bcbf3399769481 (patch)
tree242aa6b3d99d31ad623807d3b584c7896cc3f9e3 /catalog.c
parent92407d13f552cc7aea38a699d17a69a7096ee89f (diff)
Remove non default handler
Diffstat (limited to 'catalog.c')
-rw-r--r--catalog.c75
1 files changed, 0 insertions, 75 deletions
diff --git a/catalog.c b/catalog.c
index 92dce73..6faf0eb 100644
--- a/catalog.c
+++ b/catalog.c
@@ -1,81 +1,6 @@
-#include <stdio.h>
#include <stdlib.h>
-#include <string.h>
-#include <json.h>
#include "icclient/product.h"
#include "icclient/catalog.h"
-#ifdef __EMSCRIPTEN__
-#include <emscripten/fetch.h>
-#define ICCLIENT_HANDLER_REALSIZE fetch->numBytes
-#define ICCLIENT_HANDLER_RETURN
-#define ICCLIENT_HANDLER_STRUCT fetch->
-#else
-#define ICCLIENT_HANDLER_REALSIZE size * nmemb
-#define ICCLIENT_HANDLER_RETURN realsize
-#define ICCLIENT_HANDLER_STRUCT
-#endif
-
-#ifdef __EMSCRIPTEN__
-void icclient_catalog_results(emscripten_fetch_t *fetch)
-#else
-size_t icclient_catalog_results(void *data, size_t size, size_t nmemb, void *userData)
-#endif
-{
- size_t realsize = ICCLIENT_HANDLER_REALSIZE;
- json_tokener *tokener = json_tokener_new();
- json_object *products = json_tokener_parse_ex(tokener, ICCLIENT_HANDLER_STRUCT data, realsize);
- enum json_tokener_error error = json_tokener_get_error(tokener);
- if (!products) {
- if (error == json_tokener_continue)
- return ICCLIENT_HANDLER_RETURN;
- else {
- json_tokener_reset(tokener);
- return ICCLIENT_HANDLER_RETURN;
- }
- } else if (!json_object_is_type(products, json_type_array) || error != json_tokener_success)
- return ICCLIENT_HANDLER_RETURN;
- json_tokener_free(tokener);
- size_t length = json_object_array_length(products);
- struct icclient_catalog *catalog = malloc(sizeof(struct icclient_catalog) + sizeof(struct icclient_product *[length]));
- catalog->length = length;
- for (size_t i = 0; i < length; i++) {
- catalog->products[i] = malloc(sizeof(struct icclient_product));
- struct icclient_product *product = catalog->products[i];
- memset(product, '\0', sizeof(struct icclient_product));
- json_object *object = json_object_array_get_idx(products, i);
- struct json_object_iterator iterator = json_object_iter_begin(object);
- struct json_object_iterator iterator_end = json_object_iter_end(object);
- while (!json_object_iter_equal(&iterator, &iterator_end)) {
- const char *key = json_object_iter_peek_name(&iterator);
- json_object *val = json_object_iter_peek_value(&iterator);
- if (!strcmp(key, "price"))
- product->price = json_object_get_double(val);
- else {
- int len = json_object_get_string_len(val);
- if (len) {
- char *value = malloc(len + 1);
- strcpy(value, json_object_get_string(val));
- if (!strcmp(key, "sku"))
- product->sku = value;
- else if (!strcmp(key, "thumb"))
- product->thumb = value;
- else if (!strcmp(key, "image"))
- product->image = value;
- else if (!strcmp(key, "description"))
- product->description = value;
- else if (!strcmp(key, "prod_group"))
- product->prod_group = value;
- }
- }
- json_object_iter_next(&iterator);
- }
- }
- ((void (*)(struct icclient_catalog *))ICCLIENT_HANDLER_STRUCT userData)(catalog);
-#ifdef __EMSCRIPTEN__
- emscripten_fetch_close(fetch);
-#endif
- return ICCLIENT_HANDLER_RETURN;
-}
void icclient_catalog_free(struct icclient_catalog *catalog)
{