summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authoreltrac <hi@eltr.ac>2026-03-03 10:39:32 +0800
committereltrac <hi@eltr.ac>2026-03-03 10:39:32 +0800
commitac3c39a37a33d82f2149e9cfa7acaa9e0d823e9d (patch)
treec0b94a08e848562f8c32db0185f928b92ce5a5ab /src
parentbf1e765049ec85f6d60f9c3d24a953fdf914438a (diff)
refactor: move webmention channel to entry file; pass to receiver and processor
Diffstat (limited to 'src')
-rw-r--r--src/weepinbell/handler.clj10
-rw-r--r--src/weepinbell/processor.clj15
-rw-r--r--src/weepinbell/receiver.clj6
3 files changed, 25 insertions, 6 deletions
diff --git a/src/weepinbell/handler.clj b/src/weepinbell/handler.clj
index e6c972b..01f3e94 100644
--- a/src/weepinbell/handler.clj
+++ b/src/weepinbell/handler.clj
@@ -3,11 +3,17 @@
[compojure.route :as route]
[ring.middleware.defaults :refer [wrap-defaults api-defaults]]
[weepinbell.config :refer [get-config]]
- [weepinbell.receiver :refer [receive]]))
+ [weepinbell.receiver :refer [receive]]
+ [weepinbell.processor :refer [process-webmention]]
+ [clojure.core.async :refer [chan]]))
+
+(def wmc (chan))
+
+(process-webmention wmc)
(defroutes api-routes
(POST (get-config :endpoint) [source target]
- (receive {:s source :t target}))
+ (receive {:s source :t target} wmc))
(route/not-found "Not Found"))
(def app
diff --git a/src/weepinbell/processor.clj b/src/weepinbell/processor.clj
new file mode 100644
index 0000000..e17bd92
--- /dev/null
+++ b/src/weepinbell/processor.clj
@@ -0,0 +1,15 @@
+(ns weepinbell.processor
+ (:require [clojure.core.async :refer [go-loop <!]]))
+
+
+(defn process-webmention
+ "Retrieve webmention from queue and process it."
+ [wmc]
+ (println "Processor started.")
+ (go-loop []
+ (let [wm (<! wmc)]
+ (if wm
+ (println "webmention found in queue")
+ (println "Idling")))
+ (recur)))
+
diff --git a/src/weepinbell/receiver.clj b/src/weepinbell/receiver.clj
index b034b91..cf2fe91 100644
--- a/src/weepinbell/receiver.clj
+++ b/src/weepinbell/receiver.clj
@@ -3,7 +3,7 @@
(:import [org.apache.commons.validator.routines UrlValidator]
[java.net URI])
(:require [weepinbell.config :refer [get-config]]
- [clojure.core.async :refer [chan put!]]))
+ [clojure.core.async :refer [put!]]))
;; validation utilities
(defn valid-http-url? [url]
@@ -36,11 +36,9 @@
:body msg}))
checks)))
-(def wmc (chan)) ;; webmention queue
-
(defn receive
"Receive webmention; call verify-request; if verification passed, push webmention into queue."
- [wm]
+ [wm wmc]
(let [{:keys [s t]} wm
verification (verify-request s t)]
;; Request verification