diff options
Diffstat (limited to 'src/status.c')
-rw-r--r-- | src/status.c | 120 |
1 files changed, 0 insertions, 120 deletions
diff --git a/src/status.c b/src/status.c deleted file mode 100644 index cfb3645..0000000 --- a/src/status.c +++ /dev/null @@ -1,120 +0,0 @@ -#define _POSIX_C_SOURCE 200809L -#include <err.h> -#include <string.h> -#include <jansson.h> -#include "status.h" -#include "account.h" -#include "log.h" - -struct status *status_from_json(const char *json_data) -{ - struct status *s; - json_t *root; - json_error_t error; - - root = json_loads(json_data, 0, &error); - if (!root) { - log_msg(LOG_WARNING, "status_from_json", "json parse error: line %d: %s", - error.line, error.text); - return NULL; - } - - s = status_from_json_t(root); - json_decref(root); - return s; -} - -struct status *status_from_json_t(const json_t *root) -{ - struct status *s; - if (!root) { - log_msg(LOG_WARNING, "status_from_json_t", "json data is null"); - return NULL; - } - - if (!json_is_object(root)) { - log_msg(LOG_WARNING, "status_from_json_t", "json root is not object"); - return NULL; - } - - s = calloc(1, sizeof(struct status)); - if (!s) { - err(1, "status_from_json_t"); - return NULL; - } - - json_t *id = json_object_get(root, "id"); - if (json_is_string(id)) { - s->id = strdup(json_string_value(id)); - } - - json_t *uri = json_object_get(root, "uri"); - if (json_is_string(uri)) { - s->uri = strdup(json_string_value(uri)); - } - - json_t *url = json_object_get(root, "url"); - if (json_is_string(url)) { - s->url = strdup(json_string_value(url)); - } - - json_t *account = json_object_get(root, "account"); - if (json_is_object(account)) { - s->account = account_from_json_t(account); - } - - json_t *in_reply_to_id = json_object_get(root, "in_reply_to_id"); - if (json_is_string(in_reply_to_id)) { - s->in_reply_to_id = strdup(json_string_value(in_reply_to_id)); - } - - json_t *in_reply_to_account_id = - json_object_get(root, "in_reply_to_account_id"); - if (json_is_string(in_reply_to_account_id)) { - s->in_reply_to_account_id = - strdup(json_string_value(in_reply_to_account_id)); - } - - json_t *content = json_object_get(root, "content"); - if (json_is_string(content)) { - s->content = strdup(json_string_value(content)); - } - - json_t *replies_count = json_object_get(root, "replies_count"); - if (json_is_integer(replies_count)) { - s->replies_count = json_integer_value(replies_count); - } - - json_t *reblogs_count = json_object_get(root, "reblogs_count"); - if (json_is_integer(reblogs_count)) { - s->reblogs_count = json_integer_value(reblogs_count); - } - - json_t *favourites_count = json_object_get(root, "favourites_count"); - if (json_is_integer(favourites_count)) { - s->favourites_count = json_integer_value(favourites_count); - } - - return s; -} - -void status_free(struct status *s) -{ - if (s->id) - free(s->id); - if (s->uri) - free(s->uri); - if (s->url) - free(s->url); - if (s->account) - account_free(s->account); - if (s->in_reply_to_id) - free(s->in_reply_to_id); - if (s->in_reply_to_account_id) - free(s->in_reply_to_account_id); - if (s->reblog) - status_free(s->reblog); - if (s->content) - free(s->content); - free(s); -} |