diff options
| author | eltrac <hi@eltr.ac> | 2026-03-03 10:39:32 +0800 |
|---|---|---|
| committer | eltrac <hi@eltr.ac> | 2026-03-03 10:39:32 +0800 |
| commit | ac3c39a37a33d82f2149e9cfa7acaa9e0d823e9d (patch) | |
| tree | c0b94a08e848562f8c32db0185f928b92ce5a5ab /src | |
| parent | bf1e765049ec85f6d60f9c3d24a953fdf914438a (diff) | |
refactor: move webmention channel to entry file; pass to receiver and processor
Diffstat (limited to 'src')
| -rw-r--r-- | src/weepinbell/handler.clj | 10 | ||||
| -rw-r--r-- | src/weepinbell/processor.clj | 15 | ||||
| -rw-r--r-- | src/weepinbell/receiver.clj | 6 |
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 |
