From eedd9b5ce9fa3de2dc29d12319f14ea69d7466fb Mon Sep 17 00:00:00 2001 From: eltrac Date: Sat, 2 May 2026 14:33:57 +0800 Subject: 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. --- src/weepinbell/channel.clj | 14 ++++++++++++++ src/weepinbell/core.clj | 3 ++- src/weepinbell/handler.clj | 6 ++---- 3 files changed, 18 insertions(+), 5 deletions(-) create mode 100644 src/weepinbell/channel.clj (limited to 'src') 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 -- cgit v1.2.3