summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoreltrac <hi@eltr.ac>2026-05-09 14:37:24 +0800
committereltrac <hi@eltr.ac>2026-05-09 14:37:24 +0800
commit0f73efc24cd20294fe4d2fccf288d328d647d6f8 (patch)
tree7e345ace2fa3ce25a05b27d192f8a35b497662de
parent541d6a751c1deca1b67ddba8daac6aea35038a04 (diff)
fix(retreiver): respond 500 when page is not provided
-rw-r--r--src/weepinbell/retriever.clj18
1 files changed, 12 insertions, 6 deletions
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)}]