commit 427f7341fa5db23b9e67a1d1035bb3dc12d35f40
parent 286eb291c7d333995e3932bb3c3ec3f55b33402e
Author: default <nobody@localhost>
Date: Fri, 16 Dec 2022 07:09:25 +0100
New function enqueue_message().
Diffstat:
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);