X-Git-Url: https://git.wpitchoune.net/gitweb/?p=prss.git;a=blobdiff_plain;f=src%2Fttrss_ws.c;fp=src%2Fttrss_ws.c;h=4b9c040932f5d7b710f34f6da0d11dd477989648;hp=c4c2c4f096660e8923ea4d203e4c86556e4bd3ad;hb=3ef3a6b2acadc5546328a4d96e584dc4f7215af5;hpb=111ccdc319c9f80ef4350b4b07408144a5684229 diff --git a/src/ttrss_ws.c b/src/ttrss_ws.c index c4c2c4f..4b9c040 100644 --- a/src/ttrss_ws.c +++ b/src/ttrss_ws.c @@ -95,23 +95,23 @@ void ws_set_config(const char *url, const char *user, const char *pwd) struct json_object *ws_reply_get_content(struct json_object *rp) { - log_debug("ws_reply_get_content"); + log_debug("ws_reply_get_content"); return json_object_object_get(rp, "content"); } static const char *ws_reply_get_error(struct json_object *content) { - struct json_object *jerror; + struct json_object *jerror; - if (json_object_get_type(content) != json_type_object) - return NULL; + if (json_object_get_type(content) != json_type_object) + return NULL; - jerror = json_object_object_get(content, "error"); - - if (!jerror) - return NULL; + jerror = json_object_object_get(content, "error"); - return json_object_get_string(jerror); + if (!jerror) + return NULL; + + return json_object_get_string(jerror); } static struct json_object * @@ -128,13 +128,13 @@ execute(struct http_session *sess, struct json_object *rq, char **err) content = ws_reply_get_content(rp); if (content) { - str = ws_reply_get_error(content); + str = ws_reply_get_error(content); if (str) { - *err = strdup(str); + *err = strdup(str); content = NULL; } else { - json_object_get(content); + json_object_get(content); } } @@ -338,30 +338,23 @@ int ws_update_headlines(struct feed *feed) } } -struct feed **ws_update_feeds(struct feed **feeds) +static struct feed ** +feeds_update(struct feed **feeds, struct json_object *jarray) { - struct json_object *rp, *rq, *jfeed, *j; int i, n, id; + struct json_object *jfeed, *j; + const char *url, *title; struct feed *feed, **tmp; - const char *title, *url; - - log_debug("ws_update_feeds()"); - rq = ws_request_new("getFeeds"); - - rp = ws_execute(rq); - - json_object_put(rq); - - if (rp) { - n = json_object_array_length(rp); + if (jarray) { + n = json_object_array_length(jarray); for (i = 0; i < n; i++) { - jfeed = json_object_array_get_idx(rp, i); + jfeed = json_object_array_get_idx(jarray, i); j = json_object_object_get(jfeed, "id"); id = json_object_get_int(j); - + feed = feeds_get_feed(feeds, id); if (!feed) { @@ -383,10 +376,34 @@ struct feed **ws_update_feeds(struct feed **feeds) ws_update_headlines(feed); } + } + + return feeds; +} + +struct feed **ws_update_feeds(struct feed **feeds) +{ + struct json_object *rp, *rq; + + log_debug("ws_update_feeds()"); + + rq = ws_request_new("getFeeds"); + ws_request_add_att_int(rq, "cat_id", 0); + + rp = ws_execute(rq); + + if (rp) { + feeds = feeds_update(feeds, rp); + json_object_put(rp); + } + + ws_request_add_att_int(rq, "cat_id", -3); + rp = ws_execute(rq); + json_object_put(rq); + + if (rp) { + feeds = feeds_update(feeds, rp); json_object_put(rp); - } else { - feeds_free(feeds); - feeds = NULL; } log_debug("ws_update_feeds() done");