From 08de4913955c6a4a31c13f72fbce2601bed215ba Mon Sep 17 00:00:00 2001 From: default Date: Thu, 29 Aug 2024 08:30:09 +0200 Subject: [PATCH] mastoapi: added bookmark list. --- data.c | 14 +++++++++++++- mastoapi.c | 18 ++++++++++++++---- snac.h | 1 + 3 files changed, 28 insertions(+), 5 deletions(-) diff --git a/data.c b/data.c index 8345001..453bdd6 100644 --- a/data.c +++ b/data.c @@ -1026,12 +1026,18 @@ xs_str *object_user_cache_fn(snac *user, const char *id, const char *cachedir) } +xs_str *object_user_cache_index_fn(snac *user, const char *cachedir) +{ + return xs_fmt("%s/%s.idx", user->basedir, cachedir); +} + + int _object_user_cache(snac *user, const char *id, const char *cachedir, int del) /* adds or deletes from a user cache */ { xs *ofn = _object_fn(id); xs *cfn = object_user_cache_fn(user, id, cachedir); - xs *idx = xs_fmt("%s/%s.idx", user->basedir, cachedir); + xs *idx = object_user_cache_index_fn(user, cachedir); int ret; if (del) { @@ -1590,6 +1596,12 @@ xs_list *bookmark_list(snac *user) } +xs_str *bookmark_index_fn(snac *user) +{ + return object_user_cache_index_fn(user, "bookmark"); +} + + /** pinning **/ int is_pinned(snac *user, const char *id) diff --git a/mastoapi.c b/mastoapi.c index 069d823..13cc129 100644 --- a/mastoapi.c +++ b/mastoapi.c @@ -1822,10 +1822,16 @@ int mastoapi_get_handler(const xs_dict *req, const char *q_path, } else if (strcmp(cmd, "/v1/bookmarks") == 0) { /** **/ - /* snac does not support bookmarks */ - *body = xs_dup("[]"); - *ctype = "application/json"; - status = HTTP_STATUS_OK; + if (logged_in) { + xs *ifn = bookmark_index_fn(&snac1); + xs *out = mastoapi_timeline(&snac1, args, ifn); + + *body = xs_json_dumps(out, 4); + *ctype = "application/json"; + status = HTTP_STATUS_OK; + } + else + status = HTTP_STATUS_UNAUTHORIZED; } else if (strcmp(cmd, "/v1/lists") == 0) { /** list of lists **/ @@ -1850,6 +1856,8 @@ int mastoapi_get_handler(const xs_dict *req, const char *q_path, *ctype = "application/json"; status = HTTP_STATUS_OK; } + else + status = HTTP_STATUS_UNAUTHORIZED; } else if (xs_startswith(cmd, "/v1/lists/")) { /** list information **/ @@ -1910,6 +1918,8 @@ int mastoapi_get_handler(const xs_dict *req, const char *q_path, } } } + else + status = HTTP_STATUS_UNAUTHORIZED; } else if (strcmp(cmd, "/v1/scheduled_statuses") == 0) { /** **/ diff --git a/snac.h b/snac.h index a3c28a8..8f02f0a 100644 --- a/snac.h +++ b/snac.h @@ -170,6 +170,7 @@ int is_bookmarked(snac *user, const char *id); int bookmark(snac *user, const char *id); int unbookmark(snac *user, const char *id); xs_list *bookmark_list(snac *user); +xs_str *bookmark_index_fn(snac *user); int pin(snac *user, const char *id); int unpin(snac *user, const char *id);