From e663e84caf081a9701f2d583618e23b2ba2b0ce5 Mon Sep 17 00:00:00 2001 From: Michael Snoyman Date: Wed, 3 Apr 2013 17:28:44 +0300 Subject: [PATCH] Deprecate setHeader, provide addHeader #524 --- yesod-core/Yesod/Core/Class/Yesod.hs | 2 +- yesod-core/Yesod/Core/Handler.hs | 18 +++++++++++++----- yesod-core/test/YesodCoreTest/Exceptions.hs | 2 +- 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/yesod-core/Yesod/Core/Class/Yesod.hs b/yesod-core/Yesod/Core/Class/Yesod.hs index f126e1af..f4f9e68c 100644 --- a/yesod-core/Yesod/Core/Class/Yesod.hs +++ b/yesod-core/Yesod/Core/Class/Yesod.hs @@ -270,7 +270,7 @@ class RenderRoute site => Yesod site where -- Since 1.2.0 defaultYesodMiddleware :: Yesod site => HandlerT site IO res -> HandlerT site IO res defaultYesodMiddleware handler = do - setHeader "Vary" "Accept, Accept-Language" + addHeader "Vary" "Accept, Accept-Language" authorizationCheck handler diff --git a/yesod-core/Yesod/Core/Handler.hs b/yesod-core/Yesod/Core/Handler.hs index f7b9c482..c211b1a7 100644 --- a/yesod-core/Yesod/Core/Handler.hs +++ b/yesod-core/Yesod/Core/Handler.hs @@ -94,6 +94,7 @@ module Yesod.Core.Handler , setCookie , getExpires , deleteCookie + , addHeader , setHeader , setLanguage -- ** Content caching and expiration @@ -539,7 +540,7 @@ invalidArgsI msg = do -- | Set the cookie on the client. setCookie :: MonadHandler m => SetCookie -> m () -setCookie = addHeader . AddCookie +setCookie = addHeaderInternal . AddCookie -- | Helper function for setCookieExpires value getExpires :: MonadIO m @@ -558,7 +559,7 @@ deleteCookie :: MonadHandler m => Text -- ^ key -> Text -- ^ path -> m () -deleteCookie a = addHeader . DeleteCookie (encodeUtf8 a) . encodeUtf8 +deleteCookie a = addHeaderInternal . DeleteCookie (encodeUtf8 a) . encodeUtf8 -- | Set the language in the user session. Will show up in 'languages' on the @@ -570,8 +571,15 @@ setLanguage = setSession langKey -- -- Note that, while the data type used here is 'Text', you must provide only -- ASCII value to be HTTP compliant. +-- +-- Since 1.2.0 +addHeader :: MonadHandler m => Text -> Text -> m () +addHeader a = addHeaderInternal . Header (encodeUtf8 a) . encodeUtf8 + +-- | Deprecated synonym for addHeader. setHeader :: MonadHandler m => Text -> Text -> m () -setHeader a = addHeader . Header (encodeUtf8 a) . encodeUtf8 +setHeader = addHeader +{-# DEPRECATED setHeader "Please use addHeader instead" #-} -- | Set the Cache-Control header to indicate this response should be cached -- for the given number of seconds. @@ -628,8 +636,8 @@ modSession :: (SessionMap -> SessionMap) -> GHState -> GHState modSession f x = x { ghsSession = f $ ghsSession x } -- | Internal use only, not to be confused with 'setHeader'. -addHeader :: MonadHandler m => Header -> m () -addHeader = tell . Endo . (:) +addHeaderInternal :: MonadHandler m => Header -> m () +addHeaderInternal = tell . Endo . (:) -- | Some value which can be turned into a URL for redirects. class RedirectUrl master a where diff --git a/yesod-core/test/YesodCoreTest/Exceptions.hs b/yesod-core/test/YesodCoreTest/Exceptions.hs index 3e0fcddf..7c2711d9 100644 --- a/yesod-core/test/YesodCoreTest/Exceptions.hs +++ b/yesod-core/test/YesodCoreTest/Exceptions.hs @@ -26,7 +26,7 @@ getRootR = error "FOOBAR" >> return () getRedirR :: Handler () getRedirR = do - setHeader "foo" "bar" + addHeader "foo" "bar" redirectWith status301 RootR exceptionsTest :: Spec