yesod-core 1.4.4.1 → 1.4.4.2
raw patch · 5 files changed
+19/−2 lines, 5 filesdep +auto-update
Dependencies added: auto-update
Files
- Yesod/Core/Handler.hs +1/−1
- Yesod/Core/Internal/Run.hs +13/−0
- Yesod/Core/Types.hs +1/−0
- changelog.md +2/−0
- yesod-core.cabal +2/−1
Yesod/Core/Handler.hs view
@@ -694,7 +694,7 @@ -- is never (realistically) expired. neverExpires :: MonadHandler m => m () neverExpires = do- setHeader "Expires" "Thu, 31 Dec 2037 23:55:55 GMT"+ askHandlerEnv >>= liftIO . rheGetMaxExpires >>= setHeader "Expires" cacheSeconds oneYear where oneYear :: Int
Yesod/Core/Internal/Run.hs view
@@ -31,6 +31,7 @@ import Data.Text.Encoding (encodeUtf8) import Data.Text.Encoding (decodeUtf8With) import Data.Text.Encoding.Error (lenientDecode)+import Data.Time (getCurrentTime, addUTCTime) import Language.Haskell.TH.Syntax (Loc, qLocation) import qualified Network.HTTP.Types as H import Network.Wai@@ -45,9 +46,11 @@ import Yesod.Core.Types import Yesod.Core.Internal.Request (parseWaiRequest, tooLargeResponse)+import Yesod.Core.Internal.Util (formatRFC1123) import Yesod.Routes.Class (Route, renderRoute) import Control.DeepSeq (($!!), NFData) import Control.Monad (liftM)+import Control.AutoUpdate (mkAutoUpdate, defaultUpdateSettings, updateAction, updateFreq) returnDeepSessionMap :: Monad m => SessionMap -> m SessionMap #if MIN_VERSION_bytestring(0, 10, 0)@@ -194,6 +197,7 @@ -> m (Either ErrorResponse a) runFakeHandler fakeSessionMap logger site handler = liftIO $ do ret <- I.newIORef (Left $ InternalError "runFakeHandler: no result")+ getMaxExpires <- getGetMaxExpires let handler' = do liftIO . I.writeIORef ret . Right =<< handler return () let yapp = runHandler@@ -204,6 +208,7 @@ , rheUpload = fileUpload site , rheLog = messageLoggerSource site $ logger site , rheOnError = errHandler+ , rheGetMaxExpires = getMaxExpires } handler' errHandler err req = do@@ -255,6 +260,7 @@ let dontSaveSession _ = return [] (session, saveSession) <- liftIO $ do maybe (return (Map.empty, dontSaveSession)) (\sb -> sbLoadSession sb req) yreSessionBackend+ getMaxExpires <- getGetMaxExpires let mkYesodReq = parseWaiRequest req session (isJust yreSessionBackend) mmaxLen let yreq = case mkYesodReq of@@ -273,6 +279,7 @@ , rheUpload = fileUpload yreSite , rheLog = log' , rheOnError = safeEh log'+ , rheGetMaxExpires = getMaxExpires } rhe = rheSafe { rheOnError = runHandler rheSafe . errorHandler@@ -285,6 +292,12 @@ where mmaxLen = maximumContentLength yreSite route handler = yesodMiddleware handler'++getGetMaxExpires :: MonadIO m => m (IO Text)+getGetMaxExpires = liftIO $ mkAutoUpdate defaultUpdateSettings+ { updateAction = liftM (formatRFC1123 . addUTCTime (60*60*24*365)) getCurrentTime+ , updateFreq = 60 * 60 * 1000000 -- ^ Update once per hour+ } yesodRender :: Yesod y => y
Yesod/Core/Types.hs view
@@ -177,6 +177,7 @@ , rheUpload :: !(RequestBodyLength -> FileUpload) , rheLog :: !(Loc -> LogSource -> LogLevel -> LogStr -> IO ()) , rheOnError :: !(ErrorResponse -> YesodApp)+ , rheGetMaxExpires :: IO Text -- ^ How to respond when an error is thrown internally. -- -- Since 1.2.0
changelog.md view
@@ -1,3 +1,5 @@+__1.4.4.2__ `neverExpires` uses dates one year in the future (instead of in 2037).+ __1.4.4.1__ Improvements to etag/if-none-match support #868 #869 __1.4.4__ Add the `notModified` and `setEtag` functions.
yesod-core.cabal view
@@ -1,5 +1,5 @@ name: yesod-core-version: 1.4.4.1+version: 1.4.4.2 license: MIT license-file: LICENSE author: Michael Snoyman <michael@snoyman.com>@@ -69,6 +69,7 @@ , mwc-random , primitive , word8+ , auto-update exposed-modules: Yesod.Core Yesod.Core.Content