diff --git a/Makefile b/Makefile index 47bc760..8a93863 100644 --- a/Makefile +++ b/Makefile @@ -33,13 +33,13 @@ LDFLAGS = -g $(MACHDEP) -Wl,-Map,$(notdir $@).map #--------------------------------------------------------------------------------- # any extra libraries we wish to link with the project #--------------------------------------------------------------------------------- -LIBS := -lwiiuse -lbte -logc -lm +LIBS := -lwiiuse -lbte -logc -lm -ljansson #--------------------------------------------------------------------------------- # list of directories containing libraries, this must be the top level containing # include and lib #--------------------------------------------------------------------------------- -LIBDIRS := +LIBDIRS := $(PORTLIBS) #--------------------------------------------------------------------------------- # no real need to edit anything past this point unless you need to add additional diff --git a/source/debug.c b/source/debug.c new file mode 100644 index 0000000..4267b1a --- /dev/null +++ b/source/debug.c @@ -0,0 +1,9 @@ +// debug features for libreshop_client +#include + +void debug_pause() { + while(1) { + WPAD_ScanPads(); + if (WPAD_ButtonsDown(0)) break; + } +} diff --git a/source/debug.h b/source/debug.h new file mode 100644 index 0000000..d92d22b --- /dev/null +++ b/source/debug.h @@ -0,0 +1,6 @@ +#ifndef DEBUG_H +#define DEBUG_H + +void debug_pause(); + +#endif diff --git a/source/main.c b/source/main.c index b5f50a0..ac52100 100644 --- a/source/main.c +++ b/source/main.c @@ -4,7 +4,13 @@ #include #include +#include + #include "sandia/sandia.h" +#include + +// Uncomment if this is a development build +//#include "debug.h" static void *xfb = NULL; static GXRModeObj *rmode = NULL; @@ -79,8 +85,40 @@ int main(int argc, char **argv) { sandia req = sandia_create("libreshop.donut.eu.org", 80); sandia_response res = sandia_get_request(&req, "/"); - printf("\n%s\n", res.body); - sandia_close(&res); + bool lastWasNewline = false; + int resBodyLength = strlen(res.body); + for (int i = 0; i < resBodyLength; i++) { + if (res.body[i] == '\r') continue; + + if (res.body[i] == '\n') { + if (lastWasNewline) { + int rBL = resBodyLength - i; + char* body = malloc(rBL); + for (int j = 0; j < rBL; j++) { + body[j] = res.body[j + i + 1]; + } + + json_error_t error; + json_t *root = json_loads(body, 0, &error); + if (!root || !json_is_array(root)) { + printf("failed decoding\n"); + } + else { + printf("%s\n", body); + for (int j = 0; j < json_array_size(root); j++) { + json_t *data = json_array_get(root, j); + printf("%s\n", json_string_value(data)); + } + } + + break; + } + else lastWasNewline = true; + } + else lastWasNewline = false; + } + printf("\n"); + sandia_close(&req); } else { logprint(0, "Network configuration failed :(\n"); } diff --git a/source/sandia b/source/sandia index 9b383cd..62ea4d0 160000 --- a/source/sandia +++ b/source/sandia @@ -1 +1 @@ -Subproject commit 9b383cdda825ab4ba2767102b06cbd5dc734dae9 +Subproject commit 62ea4d024fda8663463ddc20c13eec5e1c08b2de