diff options
| author | eltrac <hi@eltr.ac> | 2026-05-09 14:37:24 +0800 |
|---|---|---|
| committer | eltrac <hi@eltr.ac> | 2026-05-09 14:37:24 +0800 |
| commit | 0f73efc24cd20294fe4d2fccf288d328d647d6f8 (patch) | |
| tree | 7e345ace2fa3ce25a05b27d192f8a35b497662de | |
| parent | 541d6a751c1deca1b67ddba8daac6aea35038a04 (diff) | |
fix(retreiver): respond 500 when page is not provided
| -rw-r--r-- | src/weepinbell/retriever.clj | 18 |
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)}] |
