diff options
| author | eltrac <hi@eltr.ac> | 2026-04-13 16:56:51 +0800 |
|---|---|---|
| committer | eltrac <hi@eltr.ac> | 2026-04-13 16:56:51 +0800 |
| commit | 8a6942de45ef440e93a3e5cfff841f763c0bb7e6 (patch) | |
| tree | 387cbb73fa74978cdbc73c43cd9ee1734a0a1c2e | |
| parent | 3da048cc7216312c5fe33f4b4d8a3bf30ca063ec (diff) | |
feat: list webmentions by microformats type
new route /api/likes/:domain
new route /api/reposts/:domain
new route /api/replies/:domain
| -rw-r--r-- | src/weepinbell/handler.clj | 7 | ||||
| -rw-r--r-- | src/weepinbell/retriever.clj | 11 |
2 files changed, 14 insertions, 4 deletions
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." |
