module Main where import Text.XHtml.Strict import Network.HTTP.RedHandler ----------------------------------------------- -- Main daemon and port ----------------------------------------------- main :: IO () main = runHttpServer 8080 mainHandlers ----------------------------------------------- -- Routes and handlers ----------------------------------------------- mainHandlers :: [IORqHandler BasicRsp] mainHandlers = map (modResp htmlRespToRsp) [greetHandler, inputFormHandler] inputFormHandler :: IORqHandler (HandlerRsp Html) inputFormHandler = okHtml $ page "Handlers Example" inputForm greetHandler :: IORqHandler (HandlerRsp Html) greetHandler = ifPost $ withPostField "name" (\n -> if null n then notMe else okHtml (page "Handlers Example" (greet n)) ) inputForm :: Html inputForm = form![method "post"] << [paragraph << ("My name is " +++ textfield "name"), submit "" "Submit"] greet :: String -> Html greet n = paragraph << ("Hello " ++ n ++ "!") page t b = header << thetitle << t +++ body << b ----------------------------------------------- -- Utilities for Html responses ----------------------------------------------- okHtml :: Monad m => Html -> RqHandlerT m (HandlerRsp Html) okHtml = return . return htmlRespToRsp :: HandlerRsp Html -> BasicRsp htmlRespToRsp = basicRspWith prettyHtmlFragment