snac2

Fork of https://codeberg.org/grunfink/snac2
git clone https://git.inz.fi/snac2
Log | Files | Refs | README | LICENSE

commit 427f7341fa5db23b9e67a1d1035bb3dc12d35f40
parent 286eb291c7d333995e3932bb3c3ec3f55b33402e
Author: default <nobody@localhost>
Date:   Fri, 16 Dec 2022 07:09:25 +0100

New function enqueue_message().

Diffstat:
Mactivitypub.c | 11+++++++++++
Mdata.c | 17+++++++++++++++++
Msnac.h | 1+
3 files changed, 29 insertions(+), 0 deletions(-)

diff --git 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 @@ -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 @@ -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);