diff options
-rw-r--r-- | activitypub.c | 11 | ||||
-rw-r--r-- | data.c | 17 | ||||
-rw-r--r-- | snac.h | 1 |
3 files changed, 29 insertions, 0 deletions
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"); @@ -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 */ { @@ -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); |