{-# LANGUAGE OverloadedStrings, MultiParamTypeClasses #-} module Web.Ivy.Types (Handler(..) ) where import Snap.Types class MonadSnap m => Handler m a where get, post, put, delete, handle :: a -> m () get _ = unimplemented post _ = unimplemented put _ = unimplemented delete _ = unimplemented handle a = getRequest >>= \req -> case rqMethod req of m | m == GET -> get a | m == POST -> post a | m == PUT -> put a | m == DELETE -> delete a otherwise -> unimplemented unimplemented :: MonadSnap m => m () unimplemented = writeBS "not implemented method"