{-| This is a utility module to avoid writing cumbersome import statements of common modules in every controller. -} module Lucienne.Controller.Imports ( stringSUri, withData -- Control.Monad , mzero -- Control.Monad.Trans , lift -- Happstack.Server , Response, toResponse, ok, badRequest -- Happstack.Server.RqData , RqData, look -- Lucienne.Controller , Controller -- Lucienne.Controller.Util , decodeBody, seeHome, seeHomeWith, seeOther, seeFeed, lookParameter, readParameter -- Lucienne.Controller.Message , Message (..), getMessages, withMessage -- Lucienne.Model.User , User -- Lucienne.Model.Util , readObjectId, showObjectId ) where import Control.Monad (mzero) import Control.Monad.Trans (lift) import Happstack.Server (Response,toResponse,ok,badRequest) import Happstack.Server.RqData (RqData,look) import Happstack.Server.SURI (SURI,toSURI) import Lucienne.Controller (Controller) import Lucienne.Controller.Util (decodeBody,seeHome,seeHomeWith,seeOther,seeFeed,lookParameter,readParameter) import Lucienne.Controller.Message (Message(..), getMessages, withMessage) import Lucienne.Model.User (User) import Lucienne.Model.Util (readObjectId,showObjectId) import qualified Happstack.Server.RqData as Rq stringSUri :: String -> SURI stringSUri = toSURI withData :: RqData a -> (Either [String] a -> Controller b) -> Controller b withData rqData f = Rq.getDataFn rqData >>= f