diff options
| author | eltrac <hi@eltr.ac> | 2026-03-16 20:35:56 +0800 |
|---|---|---|
| committer | eltrac <hi@eltr.ac> | 2026-03-16 20:35:56 +0800 |
| commit | 6b190a50c475852da07e4558a03f9653ef2ddb87 (patch) | |
| tree | 348f200dddb8ca6a2a114f7510250d64be11defd /src | |
| parent | 96821e2fe6f532107b6b3ffe210be8f71babd2cd (diff) | |
feat(handler): query webmention by source and target
Diffstat (limited to 'src')
| -rw-r--r-- | src/weepinbell/handler.clj | 3 | ||||
| -rw-r--r-- | src/weepinbell/retriever.clj | 14 |
2 files changed, 13 insertions, 4 deletions
diff --git a/src/weepinbell/handler.clj b/src/weepinbell/handler.clj index 17e1936..33f8d74 100644 --- a/src/weepinbell/handler.clj +++ b/src/weepinbell/handler.clj @@ -4,7 +4,7 @@ [ring.middleware.defaults :refer [wrap-defaults api-defaults]] [weepinbell.config :refer [get-config]] [weepinbell.receiver :refer [receive]] - [weepinbell.retriever :refer [retrieve retrieve-by-id]] + [weepinbell.retriever :refer [retrieve retrieve-by-id retrieve-by-url]] [weepinbell.processor :refer [process-webmention]] [clojure.core.async :refer [chan]])) @@ -17,6 +17,7 @@ (receive {:s source :t target} wmc)) (GET "/api/mentions" [filter] (retrieve filter)) (GET "/api/mention/:id" [id] (retrieve-by-id id)) + (GET "/api/mention" [source target] (retrieve-by-url source target)) (route/files "/avatars/" {:root "data/avatars"}) (route/not-found "Not Found")) diff --git a/src/weepinbell/retriever.clj b/src/weepinbell/retriever.clj index e7f74fe..ee9239e 100644 --- a/src/weepinbell/retriever.clj +++ b/src/weepinbell/retriever.clj @@ -18,10 +18,18 @@ :else identity)] ;; Use identity instead of not-empty for "no filter" (respond-json (filter pred data)))) +(defn respond-json-or-404 [data] + (if data + (respond-json data) + (respond-json {:message "webmention not found"} 404))) + (defn retrieve-by-id "Get one specific webmention by ID." [id] - (if-let [wm (storage/get-wm id)] - (respond-json wm) - (respond-json {:message "webmention not found"} 404))) + (respond-json-or-404 (storage/get-wm id))) + +(defn retrieve-by-url + "Get one specific webmention by source and target." + [source target] + (respond-json-or-404 (storage/get-wm source target))) |
