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
+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);