@@ -39,15 +39,15 @@ import Data.Monoid (mempty, mappend)
40import Network.Wai
40import Network.Wai
41import Network.Wai.Internal (ResponseReceived (ResponseReceived))
41import Network.Wai.Internal (ResponseReceived (ResponseReceived))
42+import Network.Wai.Test.Internal
42import Control.Monad.IO.Class (liftIO)
43import Control.Monad.IO.Class (liftIO)
43import Control.Monad.Trans.Class (lift)
44import Control.Monad.Trans.Class (lift)
44import qualified Control.Monad.Trans.State as ST
45import qualified Control.Monad.Trans.State as ST
45−import Control.Monad.Trans.Reader (ReaderT, runReaderT, ask)
46+import Control.Monad.Trans.Reader (runReaderT, ask)
46import Control.Monad (unless)
47import Control.Monad (unless)
47import Control.DeepSeq (deepseq)
48import Control.DeepSeq (deepseq)
48import Control.Exception (throwIO, Exception)
49import Control.Exception (throwIO, Exception)
49import Data.Typeable (Typeable)
50import Data.Typeable (Typeable)
51import qualified Data.Map as Map
51import qualified Data.Map as Map
52import qualified Web.Cookie as Cookie
52import qualified Web.Cookie as Cookie
53import Data.ByteString (ByteString)
53import Data.ByteString (ByteString)
@@ -64,17 +64,6 @@ import qualified Data.Text.Encoding as TE
64import Data.IORef
64import Data.IORef
65import Data.Time.Clock (getCurrentTime)
65import Data.Time.Clock (getCurrentTime)
67−type Session = ReaderT Application (ST.StateT ClientState IO)
72−type ClientCookies = Map ByteString Cookie.SetCookie
74−data ClientState = ClientState
75− { clientCookies :: ClientCookies
80-- Since 3.0.6
69-- Since 3.0.6
@@ -104,9 +93,7 @@ deleteClientCookie cookieName =
104 modifyClientCookies
93 modifyClientCookies
105 (Map.delete cookieName)
94 (Map.delete cookieName)
107−initState :: ClientState
96+-- | See also: 'runSessionWith'.
108−initState = ClientState Map.empty
110runSession :: Session a -> Application -> IO a
97runSession :: Session a -> Application -> IO a
111runSession session app = ST.evalStateT (runReaderT session app) initState
98runSession session app = ST.evalStateT (runReaderT session app) initState
@@ -337,4 +324,3 @@ assertClientCookieValue s cookieName cookieValue = do
339 (Cookie.setCookieValue c == cookieValue)
326 (Cookie.setCookieValue c == cookieValue)