network-pgi-0.0.1: Network/PGI/Handlers.hs
module Network.PGI.Handlers where
import Network.PGI
import TNET
import Control.Monad (liftM)
constHandler :: (TNET a) => a -> Handler
constHandler v = const (return tv)
where tv = toTNET v
constHandlerM :: (TNET a) => IO a -> Handler
constHandlerM iv = const (liftM toTNET iv)
makeHandler :: (TNET a, TNET b) => (a -> b) -> Handler
makeHandler f raw_req =
case fromTNET raw_req of
Nothing -> decodeError raw_req
Just req -> return . toTNET $ f req
makeHandlerM :: (TNET a, TNET b) => (a -> IO b) -> Handler
makeHandlerM f raw_req =
case fromTNET raw_req of
Nothing -> decodeError raw_req
Just req -> liftM toTNET $ f req
bodyData :: (TNET a) => a -> TValue
bodyData v = dict [ "body_data" .= v ]
decodeError tval = error $ unlines [ "Request was not the right type: "
, (show . encode) tval
]