packages feed

lucienne-0.0.1: Lucienne/Controller/Message.hs

module Lucienne.Controller.Message
       (Message (..), getMessages, withMessage, readParameter)
where
  
import qualified Happstack.Server as S
import           Control.Applicative (optional,(<$>))
import           Lucienne.Controller (Controller)
import           Lucienne.Url (Url)
  
data Message = UsernameExists
             | CheckPassword
             | UserCreated
             | AlreadySubscribed
               deriving (Read,Show)
                        
toMessage :: Message -> String
toMessage msg = case msg of
  UsernameExists    -> "Username already in use"
  CheckPassword     -> "Check password"
  UserCreated       -> "User successfully created"
  AlreadySubscribed -> "You've already subscribed this feed"
                        
getMessages :: Controller [String]
getMessages = do
  mMsg <- readParameter "msg"  
  return $ case mMsg of 
    Nothing  -> [ ]
    Just msg -> [toMessage msg]
  
withMessage :: Message -> Url -> Url
withMessage msg url = concat [url, "?msg=", show msg]

readParameter :: Read a => String -> Controller (Maybe a)
readParameter param = fmap read <$> (optional $ S.look param)