packages feed

wai-middleware-verbs 0.0.1 → 0.0.2

raw patch · 2 files changed

+43/−14 lines, 2 filesPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

API changes (from Hackage documentation)

- Network.Wai.Middleware.Verbs: instance GHC.Base.Applicative m => GHC.Base.Applicative (Network.Wai.Middleware.Verbs.VerbListenerT r u m)
- Network.Wai.Middleware.Verbs: instance GHC.Base.Monad m => Control.Monad.Writer.Class.MonadWriter (Network.Wai.Middleware.Verbs.Verbs u m r) (Network.Wai.Middleware.Verbs.VerbListenerT r u m)
+ Network.Wai.Middleware.Verbs: instance GHC.Base.Monad m => Control.Monad.State.Class.MonadState (Network.Wai.Middleware.Verbs.Verbs u m r) (Network.Wai.Middleware.Verbs.VerbListenerT r u m)
+ Network.Wai.Middleware.Verbs: instance GHC.Base.Monad m => GHC.Base.Applicative (Network.Wai.Middleware.Verbs.VerbListenerT r u m)
- Network.Wai.Middleware.Verbs: VerbListenerT :: WriterT (Verbs u m r) m a -> VerbListenerT r u m a
+ Network.Wai.Middleware.Verbs: VerbListenerT :: StateT (Verbs u m r) m a -> VerbListenerT r u m a
- Network.Wai.Middleware.Verbs: [runVerbListenerT] :: VerbListenerT r u m a -> WriterT (Verbs u m r) m a
+ Network.Wai.Middleware.Verbs: [runVerbListenerT] :: VerbListenerT r u m a -> StateT (Verbs u m r) m a

Files

src/Network/Wai/Middleware/Verbs.hs view
@@ -5,7 +5,28 @@   , TupleSections   #-} -module Network.Wai.Middleware.Verbs where+module Network.Wai.Middleware.Verbs+  ( Verbs (..)+  , Verb+  , getVerb+  , HandleUpload+  , Respond+  , ResponseSpec+  , supplyReq+  , lookupVerb+  , lookupVerbM+  , VerbListenerT (..)+  , execVerbListenerT+  , verbsToMiddleware+  , get+  , getReq+  , post+  , postReq+  , put+  , putReq+  , delete+  , deleteReq+  ) where   import           Network.Wai.Trans@@ -16,9 +37,11 @@ import           Data.Map (Map) import qualified Data.Map                             as Map import           Data.Maybe (fromMaybe)+import           Data.Monoid import           Control.Monad.Trans import           Control.Monad.Trans.Maybe-import           Control.Monad.Writer+import           Control.Monad.State hiding (get, put)+import qualified Control.Monad.State                  as S import           Control.Error.Util  @@ -70,16 +93,16 @@ -- * Verb Writer  newtype VerbListenerT r u m a =-  VerbListenerT { runVerbListenerT :: WriterT (Verbs u m r) m a }+  VerbListenerT { runVerbListenerT :: StateT (Verbs u m r) m a }     deriving ( Functor              , Applicative              , Monad-             , MonadWriter (Verbs u m r)+             , MonadState (Verbs u m r)              , MonadIO              )  execVerbListenerT :: Monad m => VerbListenerT r u m a -> m (Verbs u m r)-execVerbListenerT = execWriterT . runVerbListenerT+execVerbListenerT xs = execStateT (runVerbListenerT xs) mempty   instance MonadTrans (VerbListenerT r u) where@@ -104,14 +127,14 @@ -- | For simple @GET@ responses get :: ( Monad m        ) => r -> VerbListenerT r u m ()-get r = tell $ Verbs $ Map.singleton GET ( const $ return Nothing+get r = tell' $ Verbs $ Map.singleton GET ( const $ return Nothing                                          , const $ const r                                          )  -- | Inspect the @Request@ object supplied by WAI getReq :: ( Monad m           ) => (Request -> r) -> VerbListenerT r u m ()-getReq r = tell $ Verbs $ Map.singleton GET ( const $ return Nothing+getReq r = tell' $ Verbs $ Map.singleton GET ( const $ return Nothing                                             , const . r)  @@ -119,7 +142,7 @@ post :: ( Monad m         , MonadIO m         ) => HandleUpload m u -> (Maybe u -> r) -> VerbListenerT r u m ()-post handle r = tell $ Verbs $ Map.singleton POST ( handle+post handle r = tell' $ Verbs $ Map.singleton POST ( handle                                                   , const r                                                   ) @@ -127,7 +150,7 @@ postReq :: ( Monad m            , MonadIO m            ) => HandleUpload m u -> (Request -> Maybe u -> r) -> VerbListenerT r u m ()-postReq handle r = tell $ Verbs $ Map.singleton POST ( handle+postReq handle r = tell' $ Verbs $ Map.singleton POST ( handle                                                      , r                                                      ) @@ -136,7 +159,7 @@ put :: ( Monad m        , MonadIO m        ) => HandleUpload m u -> (Maybe u -> r) -> VerbListenerT r u m ()-put handle r = tell $ Verbs $ Map.singleton PUT ( handle+put handle r = tell' $ Verbs $ Map.singleton PUT ( handle                                                 , const r                                                 ) @@ -144,7 +167,7 @@ putReq :: ( Monad m           , MonadIO m           ) => HandleUpload m u -> (Request -> Maybe u -> r) -> VerbListenerT r u m ()-putReq handle r = tell $ Verbs $ Map.singleton PUT ( handle+putReq handle r = tell' $ Verbs $ Map.singleton PUT ( handle                                                    , r                                                    ) @@ -152,13 +175,19 @@ -- | For simple @DELETE@ responses delete :: ( Monad m           ) => r -> VerbListenerT r u m ()-delete r = tell $ Verbs $ Map.singleton DELETE ( const $ return Nothing+delete r = tell' $ Verbs $ Map.singleton DELETE ( const $ return Nothing                                                , const $ const r                                                )  -- | Inspect the @Request@ object supplied by WAI deleteReq :: ( Monad m              ) => (Request -> r) -> VerbListenerT r u m ()-deleteReq r = tell $ Verbs $ Map.singleton DELETE ( const $ return Nothing+deleteReq r = tell' $ Verbs $ Map.singleton DELETE ( const $ return Nothing                                                   , const . r                                                   )+++tell' :: (Monoid w, MonadState w m) => w -> m ()+tell' x = do+  xs <- S.get+  S.put $ xs <> x
wai-middleware-verbs.cabal view
@@ -1,5 +1,5 @@ Name:                   wai-middleware-verbs-Version:                0.0.1+Version:                0.0.2 Author:                 Athan Clark <athan.clark@gmail.com> Maintainer:             Athan Clark <athan.clark@gmail.com> License:                BSD3