summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar grunfink2025-05-30 12:12:19 +0200
committerGravatar grunfink2025-05-30 12:12:19 +0200
commit5a2aef8666a82a30dff329992bd41baa53d4e123 (patch)
treebf64325bf2f2bed44567484563775e9e2fc5296f
parentNew function enqueue_notify_webhook(). (diff)
downloadpenes-snac2-5a2aef8666a82a30dff329992bd41baa53d4e123.tar.gz
penes-snac2-5a2aef8666a82a30dff329992bd41baa53d4e123.tar.xz
penes-snac2-5a2aef8666a82a30dff329992bd41baa53d4e123.zip
More notify_webhook work.
-rw-r--r--activitypub.c33
-rw-r--r--data.c11
2 files changed, 43 insertions, 1 deletions
diff --git a/activitypub.c b/activitypub.c
index 8877a27..fb0c42c 100644
--- a/activitypub.c
+++ b/activitypub.c
@@ -2766,6 +2766,39 @@ void process_user_queue_item(snac *user, xs_dict *q_item)
2766 } 2766 }
2767 } 2767 }
2768 else 2768 else
2769 if (strcmp(type, "notify_webhook") == 0) {
2770 const char *webhook = xs_dict_get(user->config, "notify_webhook");
2771
2772 if (xs_is_string(webhook)) {
2773 const xs_dict *msg = xs_dict_get(q_item, "message");
2774 int retries = xs_number_get(xs_dict_get(q_item, "retries"));
2775
2776 xs *hdrs = xs_dict_new();
2777
2778 hdrs = xs_dict_set(hdrs, "content-type", "application/json");
2779 hdrs = xs_dict_set(hdrs, "user-agent", USER_AGENT);
2780
2781 xs *body = xs_json_dumps(msg, 4);
2782
2783 int status;
2784 xs *rsp = xs_http_request("POST", webhook, hdrs, body, strlen(body), &status, NULL, NULL, 0);
2785
2786 snac_debug(user, 0, xs_fmt("webhook post %s %d", webhook, status));
2787
2788 if (!valid_status(status)) {
2789 retries++;
2790
2791 if (retries > queue_retry_max)
2792 snac_debug(user, 0, xs_fmt("webhook post giving up %s", webhook));
2793 else {
2794 snac_debug(user, 0, xs_fmt("webhook post requeue %s %d", webhook, retries));
2795
2796 enqueue_notify_webhook(user, msg, retries);
2797 }
2798 }
2799 }
2800 }
2801 else
2769 snac_log(user, xs_fmt("unexpected user q_item type '%s'", type)); 2802 snac_log(user, xs_fmt("unexpected user q_item type '%s'", type));
2770} 2803}
2771 2804
diff --git a/data.c b/data.c
index ddfb443..10084f9 100644
--- a/data.c
+++ b/data.c
@@ -3529,7 +3529,16 @@ void enqueue_notify_webhook(snac *user, const xs_dict *noti, int retries)
3529 const char *webhook = xs_dict_get(user->config, "notify_webhook"); 3529 const char *webhook = xs_dict_get(user->config, "notify_webhook");
3530 3530
3531 if (xs_is_string(webhook)) { 3531 if (xs_is_string(webhook)) {
3532 xs *qmsg = _new_qmsg("notify_webhook", noti, retries); 3532 xs *msg = xs_dup(noti);
3533
3534 /* add more data */
3535 msg = xs_dict_set(msg, "target", user->actor);
3536 xs *actor_obj = NULL;
3537
3538 if (valid_status(object_get(xs_dict_get(noti, "actor"), &actor_obj)) && actor_obj)
3539 msg = xs_dict_set(msg, "account", actor_obj);
3540
3541 xs *qmsg = _new_qmsg("notify_webhook", msg, retries);
3533 const char *ntid = xs_dict_get(qmsg, "ntid"); 3542 const char *ntid = xs_dict_get(qmsg, "ntid");
3534 xs *fn = xs_fmt("%s/queue/%s.json", user->basedir, ntid); 3543 xs *fn = xs_fmt("%s/queue/%s.json", user->basedir, ntid);
3535 3544