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;
+ log_debug("ws_reply_get_error");
- jerror = json_object_object_get(content, "error");
-
- if (!jerror)
- return NULL;
+ if (json_object_get_type(content) != json_type_object)
+ return NULL;
- return json_object_get_string(jerror);
+ jerror = json_object_object_get(content, "error");
+
+ if (!jerror)
+ return NULL;
+
+ return json_object_get_string(jerror);
}
static struct json_object *
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);
+ log_debug("execute() err=%s", str);
content = NULL;
+
+ if (err)
+ *err = strdup(str);
} else {
- json_object_get(content);
+ json_object_get(content);
}
}
json_object_put(rp);
}
+ log_debug("execute() done");
+
return content;
}
session_id = NULL;
result = 0;
}
- result = 1;
} else {
result = 0;
}
j = json_object_object_get(jheadline, "unread");
h->unread = json_object_get_boolean(j);
}
+
+ if (!feed->headlines) {
+ feed->headlines = malloc(sizeof(struct headline *));
+ *(feed->headlines) = NULL;
+ }
+
json_object_put(rp);
return 1;
} else {
}
}
-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) {
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");