commit 08de491

default  ·  2024-08-29 06:30:09 +0000 UTC
parent 54520f0
mastoapi: added bookmark list.
3 files changed,  +28, -5
M data.c
M snac.h
M data.c
+13, -1
 1@@ -1026,12 +1026,18 @@ xs_str *object_user_cache_fn(snac *user, const char *id, const char *cachedir)
 2 }
 3 
 4 
 5+xs_str *object_user_cache_index_fn(snac *user, const char *cachedir)
 6+{
 7+    return xs_fmt("%s/%s.idx", user->basedir, cachedir);
 8+}
 9+
10+
11 int _object_user_cache(snac *user, const char *id, const char *cachedir, int del)
12 /* adds or deletes from a user cache */
13 {
14     xs *ofn = _object_fn(id);
15     xs *cfn = object_user_cache_fn(user, id, cachedir);
16-    xs *idx = xs_fmt("%s/%s.idx", user->basedir, cachedir);
17+    xs *idx = object_user_cache_index_fn(user, cachedir);
18     int ret;
19 
20     if (del) {
21@@ -1590,6 +1596,12 @@ xs_list *bookmark_list(snac *user)
22 }
23 
24 
25+xs_str *bookmark_index_fn(snac *user)
26+{
27+    return object_user_cache_index_fn(user, "bookmark");
28+}
29+
30+
31 /** pinning **/
32 
33 int is_pinned(snac *user, const char *id)
+14, -4
 1@@ -1822,10 +1822,16 @@ int mastoapi_get_handler(const xs_dict *req, const char *q_path,
 2     }
 3     else
 4     if (strcmp(cmd, "/v1/bookmarks") == 0) { /** **/
 5-        /* snac does not support bookmarks */
 6-        *body  = xs_dup("[]");
 7-        *ctype = "application/json";
 8-        status = HTTP_STATUS_OK;
 9+        if (logged_in) {
10+            xs *ifn = bookmark_index_fn(&snac1);
11+            xs *out = mastoapi_timeline(&snac1, args, ifn);
12+
13+            *body  = xs_json_dumps(out, 4);
14+            *ctype = "application/json";
15+            status = HTTP_STATUS_OK;
16+        }
17+        else
18+            status = HTTP_STATUS_UNAUTHORIZED;
19     }
20     else
21     if (strcmp(cmd, "/v1/lists") == 0) { /** list of lists **/
22@@ -1850,6 +1856,8 @@ int mastoapi_get_handler(const xs_dict *req, const char *q_path,
23             *ctype = "application/json";
24             status = HTTP_STATUS_OK;
25         }
26+        else
27+            status = HTTP_STATUS_UNAUTHORIZED;
28     }
29     else
30     if (xs_startswith(cmd, "/v1/lists/")) { /** list information **/
31@@ -1910,6 +1918,8 @@ int mastoapi_get_handler(const xs_dict *req, const char *q_path,
32                 }
33             }
34         }
35+        else
36+            status = HTTP_STATUS_UNAUTHORIZED;
37     }
38     else
39     if (strcmp(cmd, "/v1/scheduled_statuses") == 0) { /** **/
M snac.h
+1, -0
1@@ -170,6 +170,7 @@ int is_bookmarked(snac *user, const char *id);
2 int bookmark(snac *user, const char *id);
3 int unbookmark(snac *user, const char *id);
4 xs_list *bookmark_list(snac *user);
5+xs_str *bookmark_index_fn(snac *user);
6 
7 int pin(snac *user, const char *id);
8 int unpin(snac *user, const char *id);