Permalink
Browse files

wrap-flash no longer dies on nil response

  • Loading branch information...
1 parent 9d805fe commit 8a1550ee74bd376bd7ee056a4d39942a3131af39 @weavejester weavejester committed Feb 14, 2011
Showing with 18 additions and 16 deletions.
  1. +14 −16 ring-core/src/ring/middleware/flash.clj
  2. +4 −0 ring-core/test/ring/middleware/flash_test.clj
View
30 ring-core/src/ring/middleware/flash.clj
@@ -7,19 +7,17 @@
This is useful for small messages that persist across redirects."
[handler]
(fn [request]
- (let [session (request :session)
- flash (session :_flash)
- session (dissoc session :_flash)
- request (assoc request
- :session session
- :flash flash)
- response (handler request)
- session (if (contains? response :session)
- (response :session)
- session)
- session (if-let [flash (response :flash)]
- (assoc (response :session session) :_flash flash)
- session)]
- (if (or flash (response :flash) (contains? response :session))
- (assoc response :session session)
- response))))
+ (let [session (:session request)
+ flash (:_flash session)
+ session (dissoc session :_flash)
+ request (assoc request :session session, :flash flash)]
+ (if-let [response (handler request)]
+ (let [session (if (contains? response :session)
+ (response :session)
+ session)
+ session (if-let [flash (response :flash)]
+ (assoc (response :session session) :_flash flash)
+ session)]
+ (if (or flash (response :flash) (contains? response :session))
+ (assoc response :session session)
+ response))))))
View
4 ring-core/test/ring/middleware/flash_test.clj
@@ -34,3 +34,7 @@
handler (wrap-flash (constantly {:flash message, :session nil}))
response (handler {:session {:foo "bar"}})]
(is (= (:session response) {:_flash message}))))
+
+(deftest flash-not-except-on-nil-response
+ (let [handler (wrap-flash (constantly nil))]
+ (is (nil? (handler {})))))

0 comments on commit 8a1550e

Please sign in to comment.