-
Notifications
You must be signed in to change notification settings - Fork 9
/
Copy pathMain.hs
26 lines (22 loc) · 784 Bytes
/
Main.hs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
module Main where
import Data.Default (def)
import Data.String (fromString)
import qualified Data.Vault.Lazy as Vault
import Network.Wai
import Network.Wai.Session (withSession, Session)
import Network.Wai.Session.Map (mapStore_)
import Network.Wai.Handler.Warp (run)
import Network.HTTP.Types (ok200)
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)
main :: IO ()
main = do
session <- Vault.newKey
store <- mapStore_
run 3000 $ withSession store (fromString "SESSION") def session $ app session