summaryrefslogtreecommitdiff
path: root/src/weepinbell/processor.clj
diff options
context:
space:
mode:
authoreltrac <hi@eltr.ac>2026-04-22 12:09:41 +0800
committereltrac <hi@eltr.ac>2026-04-22 12:09:41 +0800
commit93b7a316b0824fbc3d40489bf3e9528cbe4e2a80 (patch)
tree155d0bf279c7450ee2916693323e6e0487a86d08 /src/weepinbell/processor.clj
parent9bb100633356be25b02f98bc3c30c67e5f154f54 (diff)
refactor: simple DI using callbacks
Diffstat (limited to 'src/weepinbell/processor.clj')
-rw-r--r--src/weepinbell/processor.clj20
1 files changed, 9 insertions, 11 deletions
diff --git a/src/weepinbell/processor.clj b/src/weepinbell/processor.clj
index d075a06..571a870 100644
--- a/src/weepinbell/processor.clj
+++ b/src/weepinbell/processor.clj
@@ -5,7 +5,6 @@
[weepinbell.storage :as storage]
[weepinbell.utils :refer [validate-content-types]]
[weepinbell.wrapper :as wrapper]
- [weepinbell.webhook :as webhook]
[taoensso.timbre :as timbre]))
(defn verify-mention
@@ -28,32 +27,32 @@
(defn process-new-webmention
"Store new webmention if verifed. Do nothing otherwise."
- [source target]
+ [source target callbacks]
(when (verify-mention source target)
(timbre/info "\nšŸ™‹ā€ā™‚ļø Valid webmention received: \n"
"from " source "\n"
"to " target "\n\n")
(let [data (wrapper/wrap source target)]
(storage/append-wm data)))
- (webhook/trigger :on-create))
+ ((:on-create callbacks)))
(defn process-existing-webmention
"Update existing Webmention when verified, delete it otherwise."
- [source target]
+ [source target callbacks]
(timbre/info "Webmention exists.")
(if (verify-mention source target)
(do
(storage/update-wm source target
(wrapper/wrap source target))
- (webhook/trigger :on-update)
+ ((:on-update callbacks))
(timbre/info "Webmention updated."))
(do
(storage/delete-wm source target)
- (webhook/trigger :on-delete)
+ ((:on-delete callbacks))
(timbre/info "Webmention no longer valid, deleted."))))
(defn process-webmention
- [wmc]
+ [wmc callbacks]
(go-loop []
(when-let [webmention (<! wmc)]
(timbre/info "Webmention found in queue.")
@@ -66,10 +65,9 @@
;; if not, write to data
(do
(if (storage/get-wm s t)
- (process-existing-webmention s t)
- (process-new-webmention s t))
- ;; trigger webhook
- (webhook/trigger :on-receive))
+ (process-existing-webmention s t callbacks)
+ (process-new-webmention s t callbacks))
+ ((:on-receive callbacks)))
;; 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)))