|
22 | 22 | [clojars.routes.user :as user] |
23 | 23 | [clojars.routes.verify :as verify] |
24 | 24 | [clojars.web.browse :refer [browse]] |
25 | | - [clojars.web.common :refer [html-doc]] |
| 25 | + [clojars.web.common :as common :refer [html-doc]] |
26 | 26 | [clojars.web.dashboard :refer [dashboard index-page]] |
27 | 27 | [clojars.web.safe-hiccup :refer [raw]] |
28 | 28 | [clojars.web.search :as search] |
|
36 | 36 | [ring.middleware.not-modified :refer [wrap-not-modified]] |
37 | 37 | [ring.util.response :refer [bad-request content-type]])) |
38 | 38 |
|
39 | | -(defn try-parse-page |
| 39 | +(defn- try-parse-page |
40 | 40 | "Will throw a targeted error if maybe-page doesn't parse as an integer." |
41 | 41 | [maybe-page] |
42 | | - (try |
43 | | - (Integer/parseInt maybe-page) |
44 | | - (catch Exception _ |
45 | | - (throw (ex-info |
46 | | - "page must be an integer" |
47 | | - {:report? false |
48 | | - :title "Bad Request" |
49 | | - :error-message "The page query parameter must be an integer." |
50 | | - :status 400}))))) |
| 42 | + (when maybe-page |
| 43 | + (try |
| 44 | + (Integer/parseInt maybe-page) |
| 45 | + (catch Exception _ |
| 46 | + (throw (ex-info |
| 47 | + "page must be an integer" |
| 48 | + {:report? false |
| 49 | + :title "Bad Request" |
| 50 | + :error-message "The page query parameter must be an integer." |
| 51 | + :status 400})))))) |
51 | 52 |
|
52 | 53 | (defn- main-routes |
53 | 54 | [{:as _system :keys [db event-emitter hcaptcha mailer search stats]}] |
|
60 | 61 | (index-page db stats %)))) |
61 | 62 | (GET "/search" {:keys [params]} |
62 | 63 | (try-account |
63 | | - #(let [validated-params (if (:page params) |
64 | | - (assoc params :page (try-parse-page (:page params))) |
65 | | - params)] |
| 64 | + #(let [validated-params (-> params |
| 65 | + (update :page try-parse-page))] |
66 | 66 | (search/search search % validated-params)))) |
67 | 67 | (GET "/projects" {:keys [params]} |
68 | 68 | (try-account |
69 | | - #(let [validated-params (if (:page params) |
70 | | - (assoc params :page (try-parse-page (:page params))) |
71 | | - params)] |
| 69 | + #(let [validated-params |
| 70 | + (-> params |
| 71 | + (update :from (partial common/check-no-null-bytes "from")) |
| 72 | + (update :page try-parse-page))] |
72 | 73 | (browse db % validated-params)))) |
73 | 74 | (GET "/security" [] |
74 | 75 | (try-account |
|
0 commit comments