X-Git-Url: http://git.wpitchoune.net/gitweb/?p=ppastats.git;a=blobdiff_plain;f=src%2Flp_json.c;h=c3345fdbdee17b8a92869a3e8ce9c45c84fa94f9;hp=c9379c5a707ef023b089da1485aea3161d8ce742;hb=9a8af404ffbfb331575dc4b37b044d49d728be8b;hpb=2b74afd29d7b9aebf9bd459f0aab5c420bb2a82d diff --git a/src/lp_json.c b/src/lp_json.c index c9379c5..c3345fd 100644 --- a/src/lp_json.c +++ b/src/lp_json.c @@ -36,6 +36,8 @@ static time_t json_to_time(json_object *json) if (!str) return -1; + + memset(&tm, 0, sizeof(struct tm)); tm.tm_isdst = -1; ret = strptime(str, "%FT%T", &tm); @@ -252,6 +254,7 @@ json_object_to_daily_download_total(const char *d, json_object *o_c) result = malloc(sizeof(struct daily_download_total)); result->count = json_object_get_int(o_c); + memset(&result->date, 0, sizeof(struct tm)); strptime(d, "%FT%T%z", &result->date); return result; @@ -292,3 +295,41 @@ json_object_to_daily_download_totals(json_object *o) return result; } + +struct json_object *date_to_json(struct tm *tm) +{ + json_object *json; + + json = json_object_new_array(); + json_object_array_add(json, json_object_new_int(tm->tm_year+1900)); + json_object_array_add(json, json_object_new_int(tm->tm_mon+1)); + json_object_array_add(json, json_object_new_int(tm->tm_mday)); + + return json; +} + +json_object *ddts_to_json(struct daily_download_total **ddts) +{ + json_object *json_ddt, *json_ddts; + struct daily_download_total *ddt; + + json_ddts = json_object_new_array(); + + while (ddts && *ddts) { + ddt = *ddts; + + json_ddt = json_object_new_object(); + json_object_object_add(json_ddt, + "value", + json_object_new_int(ddt->count)); + json_object_object_add(json_ddt, + "time", + date_to_json(&ddt->date)); + + json_object_array_add(json_ddts, json_ddt); + + ddts++; + } + + return json_ddts; +}