diff options
author | nirav <nirav@teisuu.com> | 2019-03-28 09:10:52 +0530 |
---|---|---|
committer | nirav <nirav@teisuu.com> | 2019-03-28 09:10:52 +0530 |
commit | 477e1ba2977435ae7bb75c7dbd95cf28247f89bd (patch) | |
tree | ce1f9719a7d11bbd47e9adea26dd610bc087962e /libgs/src/instance_info.c | |
parent | cc727e972f7fdc871ee1f42cf014151b67422bf0 (diff) | |
download | ap_client-master.tar.gz ap_client-master.zip |
Diffstat (limited to 'libgs/src/instance_info.c')
-rw-r--r-- | libgs/src/instance_info.c | 38 |
1 files changed, 38 insertions, 0 deletions
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 <string.h> +#include <jansson.h> +#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; +} |