Jelajahi Sumber

New function enqueue_notify_webhook().

grunfink 1 tahun lalu
induk
melakukan
c8f6e1865d
2 mengubah file dengan 21 tambahan dan 0 penghapusan
  1. 19 0
      data.c
  2. 2 0
      snac.h

+ 19 - 0
data.c

@@ -3166,6 +3166,8 @@ void notify_add(snac *snac, const char *type, const char *utype,
 
         pthread_mutex_unlock(&data_mutex);
     }
+
+    enqueue_notify_webhook(snac, noti, 0);
 }
 
 
@@ -3521,6 +3523,23 @@ void enqueue_webmention(const xs_dict *msg)
 }
 
 
+void enqueue_notify_webhook(snac *user, const xs_dict *noti, int retries)
+/* enqueues a notification webhook */
+{
+    const char *webhook = xs_dict_get(user->config, "notify_webhook");
+
+    if (xs_is_string(webhook)) {
+        xs *qmsg = _new_qmsg("notify_webhook", noti, retries);
+        const char *ntid = xs_dict_get(qmsg, "ntid");
+        xs *fn   = xs_fmt("%s/queue/%s.json", user->basedir, ntid);
+
+        qmsg = _enqueue_put(fn, qmsg);
+
+        snac_debug(user, 1, xs_fmt("notify_webhook"));
+    }
+}
+
+
 int was_question_voted(snac *user, const char *id)
 /* returns true if the user voted in this poll */
 {

+ 2 - 0
snac.h

@@ -294,6 +294,8 @@ 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, int forward_secs);
 void enqueue_webmention(const xs_dict *msg);
+void enqueue_notify_webhook(snac *user, const xs_dict *noti, int retries);
+
 int was_question_voted(snac *user, const char *id);
 
 xs_list *user_queue(snac *snac);