happstack-6.0.0: templates/project/src/Routes.hs
{-# LANGUAGE FlexibleContexts, FlexibleInstances, MultiParamTypeClasses #-}
module Routes (routes) where
import Control.Monad (msum)
import Happstack.Server ( Browsing(EnableBrowsing), Method(GET), Response, ServerPart
, decodeBody, defaultBodyPolicy, dir, methodM, serveDirectory
, seeOther, toResponse)
import Pages (guestBookEntriesPage, postEntryPage, readmePage)
routes :: ServerPart Response
routes =
do decodeBody (defaultBodyPolicy "/tmp/" 4096 4096 4096) -- decode the request body if present.
msum [ methodM GET >> seeOther "/guestbook" (toResponse ()) -- redirect / to /guestbook
, dir "guestbook" $ guestBookRoutes -- HSP pages
, dir "README" $ readmePage -- HStringTemplate example
, serveDirectory EnableBrowsing ["index.html"] "public" -- static file serving
]
guestBookRoutes :: ServerPart Response
guestBookRoutes =
msum [ guestBookEntriesPage
, postEntryPage
]