|
32 | 32 | (-> (response/file-response path options)
|
33 | 33 | (head/head-response request)))))))
|
34 | 34 |
|
| 35 | +(defn- wrap-file-prefer-files [handler root-path options] |
| 36 | + (fn |
| 37 | + ([request] |
| 38 | + (or (file-request request root-path options) (handler request))) |
| 39 | + ([request respond raise] |
| 40 | + (if-let [response (file-request request root-path options)] |
| 41 | + (respond response) |
| 42 | + (handler request respond raise))))) |
| 43 | + |
| 44 | +(defn- wrap-file-prefer-handler [handler root-path options] |
| 45 | + (fn |
| 46 | + ([request] |
| 47 | + (let [response (handler request)] |
| 48 | + (if (= 404 (:status response)) |
| 49 | + (file-request request root-path options) |
| 50 | + response))) |
| 51 | + ([request respond raise] |
| 52 | + (handler request |
| 53 | + (fn [response] |
| 54 | + (if (= 404 (:status response)) |
| 55 | + (respond (file-request request root-path options)) |
| 56 | + (respond response))) |
| 57 | + raise)))) |
| 58 | + |
35 | 59 | (defn wrap-file
|
36 | 60 | "Wrap an handler such that the directory at the given root-path is checked for
|
37 | 61 | a static file with which to respond to the request, proxying the request to
|
|
46 | 70 | (wrap-file handler root-path {}))
|
47 | 71 | ([handler root-path options]
|
48 | 72 | (ensure-dir root-path)
|
49 |
| - (fn |
50 |
| - ([request] |
51 |
| - (if (:prefer-handler? options) |
52 |
| - (let [response (handler request)] |
53 |
| - (if (= 404 (:status response)) |
54 |
| - (file-request request root-path options) |
55 |
| - response)) |
56 |
| - (or (file-request request root-path options) (handler request)))) |
57 |
| - ([request respond raise] |
58 |
| - (if (:prefer-handler? options) |
59 |
| - (handler request |
60 |
| - (fn [response] |
61 |
| - (if (= 404 (:status response)) |
62 |
| - (respond (file-request request root-path options)) |
63 |
| - (respond response))) |
64 |
| - raise) |
65 |
| - (if-let [response (file-request request root-path options)] |
66 |
| - (respond response) |
67 |
| - (handler request respond raise))))))) |
| 73 | + (if (:prefer-handler? options) |
| 74 | + (wrap-file-prefer-handler handler root-path options) |
| 75 | + (wrap-file-prefer-files handler root-path options)))) |
0 commit comments