From efcc31ca979f631d1ed62fef40fefa80e4f22ea8 Mon Sep 17 00:00:00 2001 From: Flowers Safety <40meta@gmail.com> Date: Wed, 11 Nov 2020 18:00:58 +0600 Subject: [PATCH] Example refactoring - data-default dependecy was removed - explicit respond function application --- example/Main.hs | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/example/Main.hs b/example/Main.hs index e2cec37..a1ecaf2 100644 --- a/example/Main.hs +++ b/example/Main.hs @@ -1,26 +1,27 @@ module Main where -import Data.Default (def) +import Data.Maybe (fromMaybe) import Data.String (fromString) import qualified Data.Vault.Lazy as Vault -import Network.Wai +import Network.Wai (Application, pathInfo, responseLBS, vault) import Network.Wai.Session (withSession, Session) import Network.Wai.Session.Map (mapStore_) import Network.Wai.Handler.Warp (run) import Network.HTTP.Types (ok200) +import Web.Cookie (defaultSetCookie) app :: Vault.Key (Session IO String String) -> Application -app session env = (>>=) $ do - u <- sessionLookup "u" - sessionInsert "u" insertThis - return $ responseLBS ok200 [] $ maybe (fromString "Nothing") fromString u - where - insertThis = show $ pathInfo env - Just (sessionLookup, sessionInsert) = Vault.lookup session (vault env) +app vaultKey request respond = do + u <- sessionLookup "u" + sessionInsert "u" path + respond . responseLBS ok200 [] . fromString $ fromMaybe "Nothing" u; + where + path = show $ pathInfo request + Just (sessionLookup, sessionInsert) = Vault.lookup vaultKey (vault request) main :: IO () main = do - session <- Vault.newKey - store <- mapStore_ - run 3000 $ withSession store (fromString "SESSION") def session $ app session + vaultKey <- Vault.newKey + store <- mapStore_ + run 3000 . withSession store (fromString "SESSION") defaultSetCookie vaultKey $ app vaultKey