packages feed

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
         ]