From 427f7341fa5db23b9e67a1d1035bb3dc12d35f40 Mon Sep 17 00:00:00 2001 From: default Date: Fri, 16 Dec 2022 07:09:25 +0100 Subject: New function enqueue_message(). --- activitypub.c | 11 +++++++++++ data.c | 17 +++++++++++++++++ snac.h | 1 + 3 files changed, 29 insertions(+) diff --git a/activitypub.c b/activitypub.c index 9a63de7..79ec98b 100644 --- a/activitypub.c +++ b/activitypub.c @@ -990,6 +990,17 @@ void process_queue(snac *snac) if ((type = xs_dict_get(q_item, "type")) == NULL) type = "output"; + if (strcmp(type, "message") == 0) { + char *msg = xs_dict_get(q_item, "message"); + xs *inboxes = inbox_list(snac, msg); + char *p, *v; + + p = inboxes; + while (xs_list_iter(&p, &v)) { + enqueue_output(snac, msg, v, 0); + } + } + else if (strcmp(type, "output") == 0) { int status; char *inbox = xs_dict_get(q_item, "inbox"); diff --git a/data.c b/data.c index cdffc02..60e5f5d 100644 --- a/data.c +++ b/data.c @@ -1384,6 +1384,23 @@ void enqueue_email(snac *snac, char *msg, int retries) } +void enqueue_message(snac *snac, char *msg) +/* enqueues an output message */ +{ + char *id = xs_dict_get(msg, "id"); + xs *ntid = tid(0); + xs *fn = xs_fmt("%s/queue/%s.json", snac->basedir, ntid); + xs *qmsg = xs_dict_new(); + + qmsg = xs_dict_append(qmsg, "type", "message"); + qmsg = xs_dict_append(qmsg, "message", msg); + + _enqueue_put(fn, qmsg); + + snac_debug(snac, 1, xs_fmt("enqueue_message %s", id)); +} + + d_char *queue(snac *snac) /* returns a list with filenames that can be dequeued */ { diff --git a/snac.h b/snac.h index 3406d9a..0c4f3df 100644 --- a/snac.h +++ b/snac.h @@ -127,6 +127,7 @@ void enqueue_input(snac *snac, char *msg, char *req, int retries); void enqueue_output(snac *snac, char *msg, char *inbox, int retries); void enqueue_output_by_actor(snac *snac, char *msg, char *actor, int retries); void enqueue_email(snac *snac, char *msg, int retries); +void enqueue_message(snac *snac, char *msg); d_char *queue(snac *snac); d_char *dequeue(snac *snac, char *fn); -- cgit v1.2.3