yesod/Web/Restful/Handler.hs
2009-09-18 04:14:52 +03:00

41 lines
1.1 KiB
Haskell

{-# LANGUAGE ExistentialQuantification #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE FunctionalDependencies #-}
---------------------------------------------------------
--
-- Module : Web.Restful.Handler
-- Copyright : Michael Snoyman
-- License : BSD3
--
-- Maintainer : Michael Snoyman <michael@snoyman.com>
-- Stability : unstable
-- Portability : portable
--
-- Define Handler stuff.
--
---------------------------------------------------------
module Web.Restful.Handler
( Handler
, liftHandler
, noHandler
) where
import Web.Restful.Request
import Web.Restful.Response
type Handler = RawRequest -> Response
liftHandler :: (Request req, HasReps rep)
=> (req -> ResponseIO rep)
-> Handler
liftHandler f req = liftRequest req >>= wrapResponse . f
liftRequest :: (Request req, Monad m) => RawRequest -> m req
liftRequest r =
case runRequestParser parseRequest r of
Left errors -> fail $ unlines errors -- FIXME
Right req -> return req
noHandler :: Handler
noHandler = const notFound