summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authoreltrac <hi@eltr.ac>2026-03-17 17:24:58 +0800
committereltrac <hi@eltr.ac>2026-03-17 17:24:58 +0800
commit8cd29d77cee66c5e18df08741d91444e100c734e (patch)
tree48e09798fce36e8382b6a5e660ec8aac6c00f3a2 /src
parente5c2485118fbed590c6b9dbe510b8f4a44484e80 (diff)
feat(webhook): trigger webhooks on receiving new mentions
Diffstat (limited to 'src')
-rw-r--r--src/weepinbell/processor.clj10
-rw-r--r--src/weepinbell/webhook.clj12
2 files changed, 19 insertions, 3 deletions
diff --git a/src/weepinbell/processor.clj b/src/weepinbell/processor.clj
index 326688b..64df22e 100644
--- a/src/weepinbell/processor.clj
+++ b/src/weepinbell/processor.clj
@@ -8,6 +8,7 @@
file-exists?
download-file]]
[weepinbell.config :refer [get-config]]
+ [weepinbell.webhook :as webhook]
[taoensso.timbre :as timbre]
[digest :as digest])
(:import [com.kylewm.mf2j Mf2Parser]
@@ -131,9 +132,12 @@
;; second check if such webmention exists
;; if so, update it or delete it
;; if not, write to data
- (if (storage/get-wm s t)
- (process-existing-webmention s t)
- (process-new-webmention s t))
+ (do
+ (if (storage/get-wm s t)
+ (process-existing-webmention s t)
+ (process-new-webmention s t))
+ ;; trigger webhook
+ (webhook/trigger :on-receive))
;; if content-type check fails
(timbre/error "Source or target is not HTML or plain text; or error occurred trying to get content type."))))
(recur)))
diff --git a/src/weepinbell/webhook.clj b/src/weepinbell/webhook.clj
new file mode 100644
index 0000000..cfd796e
--- /dev/null
+++ b/src/weepinbell/webhook.clj
@@ -0,0 +1,12 @@
+(ns weepinbell.webhook
+ (:require [clj-http.client :as client]
+ [taoensso.timbre :as timbre]
+ [weepinbell.config :refer [get-config]]))
+
+(defn trigger [keyw]
+ ;; keyw = on-receive...
+ (when-let [hooks (get (get-config :webhook) keyw)]
+ (doall (map #((client/post %)
+ (timbre/info "Webhook triggered: " %))
+ hooks))))
+