From 0f73efc24cd20294fe4d2fccf288d328d647d6f8 Mon Sep 17 00:00:00 2001 From: eltrac Date: Sat, 9 May 2026 14:37:24 +0800 Subject: fix(retreiver): respond 500 when page is not provided --- src/weepinbell/retriever.clj | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/weepinbell/retriever.clj b/src/weepinbell/retriever.clj index de0d436..28575d9 100644 --- a/src/weepinbell/retriever.clj +++ b/src/weepinbell/retriever.clj @@ -23,14 +23,20 @@ ([page data] (respond-webmention-list-json page default-page-size data)) ([page page-size data] - (let [page (Integer/parseInt page)] - {:status 200 - :headers {"Content-Type" "application/json; charset=utf-8"} - :body (if (or (nil? page) (< page 0)) data + (if (nil? page) data ;; if page number is provided ;; partition and return page frame - (-> (partition-all page-size data) - (nth page)))}))) + (let [pages (partition-all page-size data) + length (count pages) + page (Integer/parseInt page)] + (if (>= page length) + {:status 404 + :headers {"Content-Type" "application/json; charset=utf-8"} + :body {:message "No such page. Is page out of range and is it an integer?"}} + ;; return page frame if page exists + {:status 200 + :headers {"Content-Type" "application/json; charset=utf-8"} + :body (nth pages page)}))))) (defn- wrap-response-object [data] (let [result {:webmention (:webmention data)}] -- cgit v1.2.3