From d37b0634a57c843941be92c64b7aba7b77a026d8 Mon Sep 17 00:00:00 2001 From: Michael Snoyman Date: Wed, 21 Nov 2012 10:58:45 +0200 Subject: [PATCH] Added yesodMiddleware method --- yesod-core/Yesod/Internal/Core.hs | 14 +++++++++++++- yesod-core/test/YesodCoreTest/Widget.hs | 1 + yesod-core/yesod-core.cabal | 2 +- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/yesod-core/Yesod/Internal/Core.hs b/yesod-core/Yesod/Internal/Core.hs index 4fedabeb..25d1be74 100644 --- a/yesod-core/Yesod/Internal/Core.hs +++ b/yesod-core/Yesod/Internal/Core.hs @@ -372,6 +372,17 @@ $doctype 5 shouldLog :: a -> LogSource -> LogLevel -> Bool shouldLog a _ level = level >= logLevel a + -- | A Yesod middleware, which will wrap every handler function. This + -- allows you to run code before and after a normal handler. + -- + -- Default: Adds the response header \"Vary: Accept, Accept-Language\". + -- + -- Since: 1.1.6 + yesodMiddleware :: GHandler sub a res -> GHandler sub a res + yesodMiddleware handler = do + setHeader "Vary" "Accept, Accept-Language" + handler + {-# DEPRECATED messageLogger "Please use messageLoggerSource (since yesod-core 1.1.2)" #-} formatLogMessage :: IO ZonedDate @@ -419,7 +430,7 @@ defaultYesodRunner :: Yesod master -> (Route sub -> Route master) -> Maybe (SessionBackend master) -> W.Application -defaultYesodRunner logger handler master sub murl toMasterRoute msb req +defaultYesodRunner logger handler' master sub murl toMasterRoute msb req | maximumContentLength master (fmap toMasterRoute murl) < len = return $ W.responseLBS (H.Status 413 "Too Large") @@ -469,6 +480,7 @@ defaultYesodRunner logger handler master sub murl toMasterRoute msb req case reads $ S8.unpack s of [] -> Nothing (x, _):_ -> Just x + handler = yesodMiddleware handler' data AuthResult = Authorized | AuthenticationRequired | Unauthorized Text deriving (Eq, Show, Read) diff --git a/yesod-core/test/YesodCoreTest/Widget.hs b/yesod-core/test/YesodCoreTest/Widget.hs index dee452aa..9b14ee35 100644 --- a/yesod-core/test/YesodCoreTest/Widget.hs +++ b/yesod-core/test/YesodCoreTest/Widget.hs @@ -131,3 +131,4 @@ case_jshead = runner $ do { pathInfo = ["jshead"] } assertBody "\n" res + assertHeader "Vary" "Accept, Accept-Language" res diff --git a/yesod-core/yesod-core.cabal b/yesod-core/yesod-core.cabal index 07ef4858..d2dcaed2 100644 --- a/yesod-core/yesod-core.cabal +++ b/yesod-core/yesod-core.cabal @@ -1,5 +1,5 @@ name: yesod-core -version: 1.1.5 +version: 1.1.6 license: MIT license-file: LICENSE author: Michael Snoyman