diff options
| author | eltrac <hi@eltr.ac> | 2026-05-02 14:33:57 +0800 |
|---|---|---|
| committer | eltrac <hi@eltr.ac> | 2026-05-02 14:33:57 +0800 |
| commit | eedd9b5ce9fa3de2dc29d12319f14ea69d7466fb (patch) | |
| tree | e8186fc7699d820f0dd5d950ad44b3b5e3c51f7c /src | |
| parent | 8600832811a5a411a404c8a6d239448bcc58399d (diff) | |
refactor: decouple handler.clj and webmention queue
a new component 'channel.clj' is created to manage `wmc` (Webmention
channel). It's a dirty technical detail that should only be called in
core.clj and handler.clj, business rules should not interact with it
directly.
Diffstat (limited to 'src')
| -rw-r--r-- | src/weepinbell/channel.clj | 14 | ||||
| -rw-r--r-- | src/weepinbell/core.clj | 3 | ||||
| -rw-r--r-- | src/weepinbell/handler.clj | 6 |
3 files changed, 18 insertions, 5 deletions
diff --git a/src/weepinbell/channel.clj b/src/weepinbell/channel.clj new file mode 100644 index 0000000..3c0180a --- /dev/null +++ b/src/weepinbell/channel.clj @@ -0,0 +1,14 @@ +;; channel.clj defines and exports 'wmc' +;; this is a channel (queue) in which +;; webmentions are put and retrieved +;; +;; it should only be referred to in core.clj +;; and handler.clj, and passed as an argument +;; to processer.clj and retriever.clj. +;; This keeps components loosely coupled. + +(ns weepinbell.channel + (:require [clojure.core.async :refer [chan]])) + +(def wmc (chan)) + diff --git a/src/weepinbell/core.clj b/src/weepinbell/core.clj index 854c317..b2e365b 100644 --- a/src/weepinbell/core.clj +++ b/src/weepinbell/core.clj @@ -1,7 +1,8 @@ (ns weepinbell.core (:require [ring.adapter.jetty :refer [run-jetty]] [weepinbell.processor :refer [process-webmention]] - [weepinbell.handler :refer [app wmc]] + [weepinbell.handler :refer [app]] + [weepinbell.channel :refer [wmc]] [weepinbell.config :refer [get-config]] [weepinbell.webhook :as webhook] [taoensso.timbre :as timbre]) diff --git a/src/weepinbell/handler.clj b/src/weepinbell/handler.clj index 4782627..a4b69fc 100644 --- a/src/weepinbell/handler.clj +++ b/src/weepinbell/handler.clj @@ -7,11 +7,9 @@ [weepinbell.config :refer [get-config]] [weepinbell.receiver :refer [receive]] [weepinbell.retriever :as retriever] + [weepinbell.channel :refer [wmc]] [weepinbell.ui :as ui] - [weepinbell.feed :as feed] - [clojure.core.async :refer [chan]])) - -(def wmc (chan)) + [weepinbell.feed :as feed])) ;; Define API routes |
