From 477e1ba2977435ae7bb75c7dbd95cf28247f89bd Mon Sep 17 00:00:00 2001 From: nirav Date: Thu, 28 Mar 2019 09:10:52 +0530 Subject: Move APIs into libgs dir --- libgs/src/instance_info.c | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 libgs/src/instance_info.c (limited to 'libgs/src/instance_info.c') diff --git a/libgs/src/instance_info.c b/libgs/src/instance_info.c new file mode 100644 index 0000000..40f07c6 --- /dev/null +++ b/libgs/src/instance_info.c @@ -0,0 +1,38 @@ +#define _POSIX_C_SOURCE 200809L +#include +#include +#include "instance_info.h" +#include "log.h" + +struct instance_info *instance_info_from_json(char *json_data) +{ + struct instance_info *info; + info = malloc(sizeof(struct instance_info)); + + json_t *root; + json_error_t error; + + root = json_loads(json_data, 0, &error); + + if (!root) { + gs_log(GS_WARNING, "instance_info_from_json", "error: on line %d: %s", + error.line, error.text); + return NULL; + } + + if (!json_is_object(root)) { + gs_log(GS_WARNING, "instance_info_from_json", "root is not object"); + json_decref(root); + return NULL; + } + + json_t *title = json_object_get(root, "title"); + if (!json_is_string(title)) { + gs_log(GS_WARNING, "instance_info_from_json", "title is not string"); + return NULL; + } + info->title = strdup(json_string_value(title)); + + json_decref(root); + return info; +} -- cgit v1.2.3