diff --git a/activitypub.c b/activitypub.c index a8a7db7..bb919ed 100644 --- a/activitypub.c +++ b/activitypub.c @@ -2313,6 +2313,22 @@ void process_user_queue_item(snac *snac, xs_dict *q_item) timeline_request_replies(snac, id); } else + if (strcmp(type, "object_request") == 0) { + const char *id = xs_dict_get(q_item, "message"); + + if (!xs_is_null(id)) { + int status; + xs *data = NULL; + + status = activitypub_request(snac, id, &data); + + if (valid_status(status)) + object_add_ow(id, data); + + snac_debug(snac, 1, xs_fmt("object_request %s %d", id, status)); + } + } + else if (strcmp(type, "verify_links") == 0) { verify_links(snac); } diff --git a/data.c b/data.c index db544f4..4d753a9 100644 --- a/data.c +++ b/data.c @@ -2651,6 +2651,21 @@ void enqueue_close_question(snac *user, const char *id, int end_secs) } +void enqueue_object_request(snac *user, const char *id, int forward_secs) +/* enqueues the request of an object in the future */ +{ + xs *qmsg = _new_qmsg("object_request", id, 0); + xs *ntid = tid(forward_secs); + xs *fn = xs_fmt("%s/queue/%s.json", user->basedir, ntid); + + qmsg = xs_dict_set(qmsg, "ntid", ntid); + + qmsg = _enqueue_put(fn, qmsg); + + snac_debug(user, 0, xs_fmt("enqueue_object_request %s", id)); +} + + void enqueue_verify_links(snac *user) /* enqueues a link verification */ { diff --git a/main.c b/main.c index 06cae78..6a38412 100644 --- a/main.c +++ b/main.c @@ -458,6 +458,12 @@ int main(int argc, char *argv[]) return 0; } + if (strcmp(cmd, "request2") == 0) { /** **/ + enqueue_object_request(&snac, url, 2); + + return 0; + } + if (strcmp(cmd, "actor") == 0) { /** **/ int status; xs *data = NULL; diff --git a/snac.h b/snac.h index 74e58cd..721d088 100644 --- a/snac.h +++ b/snac.h @@ -226,6 +226,7 @@ void enqueue_telegram(const xs_str *msg, const char *bot, const char *chat_id); void enqueue_ntfy(const xs_str *msg, const char *ntfy_server, const char *ntfy_token); void enqueue_message(snac *snac, const xs_dict *msg); void enqueue_close_question(snac *user, const char *id, int end_secs); +void enqueue_object_request(snac *user, const char *id, int forward_secs); void enqueue_verify_links(snac *user); void enqueue_actor_refresh(snac *user, const char *actor); void enqueue_request_replies(snac *user, const char *id);