From 8a6942de45ef440e93a3e5cfff841f763c0bb7e6 Mon Sep 17 00:00:00 2001 From: eltrac Date: Mon, 13 Apr 2026 16:56:51 +0800 Subject: feat: list webmentions by microformats type new route /api/likes/:domain new route /api/reposts/:domain new route /api/replies/:domain --- src/weepinbell/handler.clj | 7 +++++++ src/weepinbell/retriever.clj | 11 +++++++---- 2 files changed, 14 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/weepinbell/handler.clj b/src/weepinbell/handler.clj index f224cb0..d13413d 100644 --- a/src/weepinbell/handler.clj +++ b/src/weepinbell/handler.clj @@ -29,6 +29,13 @@ (context "/mentions" [] (GET "/" [url] (retriever/by-url url)) (GET "/:domain" [domain] (retriever/by-domain domain))) + ;; query webmention list by microformats type + (context "/likes" [] + (GET "/:domain" [domain] (retriever/by-domain domain :like-of))) + (context "/reposts" [] + (GET "/:domain" [domain] (retriever/by-domain domain :repost-of))) + (context "/replies" [] + (GET "/:domain" [domain] (retriever/by-domain domain :in-reply-to))) ;; query one specific webmention (context "/mention" [] (GET "/:id" [id] (retriever/by-id id)) diff --git a/src/weepinbell/retriever.clj b/src/weepinbell/retriever.clj index 5c052ed..da6868b 100644 --- a/src/weepinbell/retriever.clj +++ b/src/weepinbell/retriever.clj @@ -29,10 +29,13 @@ (defn by-domain "Get webmentions sent to a particular domain." - [domain] - (-> (storage/get-wms-by-domain domain) - wrap-response-list - respond-json)) + ([domain] + (by-domain domain nil)) + ([domain mftype] + (cond->> (storage/get-wms-by-domain domain) + true wrap-response-list + mftype (filter #(= (-> % :microformats :type) mftype)) + true respond-json))) (defn by-url "Get webmention sent to a particular URL." -- cgit v1.2.3