From 0bbecf53a670202334128b1372cfc5d83273fbf1 Mon Sep 17 00:00:00 2001 From: default Date: Sun, 22 Dec 2024 09:26:17 +0100 Subject: [PATCH] mastoapi: allow search for post URLs. --- mastoapi.c | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/mastoapi.c b/mastoapi.c index 3f8b59d..09e18a1 100644 --- a/mastoapi.c +++ b/mastoapi.c @@ -2377,6 +2377,37 @@ int mastoapi_get_handler(const xs_dict *req, const char *q_path, if (xs_is_null(offset) || strcmp(offset, "0") == 0) { /* reply something only for offset 0; otherwise, apps like Tusky keep asking again and again */ + if (xs_startswith(q, "https://")) { + xs *md5 = xs_md5_hex(q, strlen(q)); + + if (!timeline_here(&snac1, md5)) { + xs *object = NULL; + int status; + + status = activitypub_request(&snac1, q, &object); + snac_debug(&snac1, 1, xs_fmt("Request searched URL %s %d", q, status)); + + if (valid_status(status)) { + /* got it; also request the actor */ + const char *attr_to = get_atto(object); + xs *actor_obj = NULL; + + if (!xs_is_null(attr_to)) { + status = actor_request(&snac1, attr_to, &actor_obj); + + snac_debug(&snac1, 1, xs_fmt("Request author %s of %s %d", attr_to, q, status)); + + if (valid_status(status)) { + /* add the actor */ + actor_add(attr_to, actor_obj); + + /* add the post to the timeline */ + timeline_add(&snac1, q, object); + } + } + } + } + } if (!xs_is_null(q)) { if (xs_is_null(type) || strcmp(type, "accounts") == 0) {