(no commit message)
authorJean-Philippe Orsini <jeanfi@gmail.com>
Mon, 29 Apr 2013 15:00:15 +0000 (15:00 +0000)
committerJean-Philippe Orsini <jeanfi@gmail.com>
Mon, 29 Apr 2013 15:00:15 +0000 (15:00 +0000)
src/ttrss_ws.c

index 582f9fb..c4c2c4f 100644 (file)
@@ -95,13 +95,29 @@ void ws_set_config(const char *url, const char *user, const char *pwd)
 
 struct json_object *ws_reply_get_content(struct json_object *rp)
 {
 
 struct json_object *ws_reply_get_content(struct json_object *rp)
 {
+        log_debug("ws_reply_get_content");
        return json_object_object_get(rp, "content");
 }
 
        return json_object_object_get(rp, "content");
 }
 
+static const char *ws_reply_get_error(struct json_object *content)
+{
+        struct json_object *jerror;
+
+        if (json_object_get_type(content) != json_type_object)
+                return NULL;
+
+        jerror = json_object_object_get(content, "error");
+        
+        if (!jerror)
+                return NULL;
+
+        return json_object_get_string(jerror);                
+}
+
 static struct json_object *
 execute(struct http_session *sess, struct json_object *rq, char **err)
 {
 static struct json_object *
 execute(struct http_session *sess, struct json_object *rq, char **err)
 {
-       struct json_object *rp, *content, *jerror;
+       struct json_object *rp, *content;
        const char *str;
 
        rp = http_json_get(sess, session_url, rq);
        const char *str;
 
        rp = http_json_get(sess, session_url, rq);
@@ -112,15 +128,13 @@ execute(struct http_session *sess, struct json_object *rq, char **err)
                content = ws_reply_get_content(rp);
 
                if (content) {
                content = ws_reply_get_content(rp);
 
                if (content) {
-                       jerror = json_object_object_get(content, "error");
-                       if (jerror) {
-                               if (err) {
-                                       str = json_object_get_string(jerror);
-                                       *err = strdup(str);
-                               }
+                        str = ws_reply_get_error(content);
+
+                       if (str) {
+                                *err = strdup(str);
                                content = NULL;
                        } else {
                                content = NULL;
                        } else {
-                               json_object_get(content);
+                                json_object_get(content);
                        }
                }
 
                        }
                }
 
@@ -143,7 +157,7 @@ struct json_object *ws_execute(struct json_object *rq)
        result = execute(session, rq, &err);
 
        if (err) {
        result = execute(session, rq, &err);
 
        if (err) {
-               log_debug("ws_execute(): error=%s\n", err);
+               log_debug("ws_execute(): error=%s", err);
 
                if (!strcmp(err, "NOT_LOGGED_IN")) {
                        ws_open_session();
 
                if (!strcmp(err, "NOT_LOGGED_IN")) {
                        ws_open_session();
@@ -336,6 +350,7 @@ struct feed **ws_update_feeds(struct feed **feeds)
        rq = ws_request_new("getFeeds");
 
        rp = ws_execute(rq);
        rq = ws_request_new("getFeeds");
 
        rp = ws_execute(rq);
+
        json_object_put(rq);
 
        if (rp) {
        json_object_put(rq);
 
        if (rp) {
@@ -346,7 +361,7 @@ struct feed **ws_update_feeds(struct feed **feeds)
 
                        j = json_object_object_get(jfeed, "id");
                        id = json_object_get_int(j);
 
                        j = json_object_object_get(jfeed, "id");
                        id = json_object_get_int(j);
-
+                        
                        feed = feeds_get_feed(feeds, id);
 
                        if (!feed) {
                        feed = feeds_get_feed(feeds, id);
 
                        if (!feed) {