packages feed

wai-middleware-verbs 0.1.1 → 0.2.0

raw patch · 3 files changed

+22/−26 lines, 3 filesdep ~wai-transformersPVP ok

version bump matches the API change (PVP)

Dependency ranges changed: wai-transformers

API changes (from Hackage documentation)

- Network.Wai.Middleware.Verbs: verbsToMiddleware :: MonadIO m => VerbListenerT (MiddlewareT m) m () -> MiddlewareT m

Files

examples/Example.hs view
@@ -16,8 +16,9 @@ import Control.Monad.Catch  -theEmbeddedApp :: MonadIO m => LT.Text -> MiddlewareT m-theEmbeddedApp v _ _ respond =+theEmbeddedApp :: ( MonadIO m+                  ) => LT.Text -> ApplicationT m+theEmbeddedApp v _ respond =   respond $ textOnly $ v <> " Verb accepted!"  @@ -28,7 +29,7 @@  myListener :: ( MonadIO m               , MonadThrow m-              ) => VerbListenerT (MiddlewareT m) m ()+              ) => VerbListenerT (ApplicationT m) m () myListener = do   get                $ theEmbeddedApp "GET"   put  uploadFail    $ theEmbeddedApp "PUT" -- should never work@@ -38,8 +39,9 @@     uploadFail    _ = throwM UploadFailed     uploadSucceed _ = return () -handleError :: UploadError -> MiddlewareT m-handleError UploadFailed _ _ respond =+handleError :: ( MonadIO m+               ) => UploadError -> ApplicationT m+handleError UploadFailed _ respond =   respond $ textOnly "Upload Failed!"  @@ -47,8 +49,15 @@          , MonadCatch m          ) => MiddlewareT m myApp app req respond =-          (verbsToMiddleware myListener app req respond)-  `catch` (\e -> handleError e app req respond)+  findResponse `catch` (\e -> handleError e req respond)+  where+    findResponse = do+      let v = getVerb req+      xs <- execVerbListenerT myListener+      mr <- lookupVerb req v xs+      case mr of+        Nothing -> app req respond+        Just r  -> r req respond   main :: IO ()
src/Network/Wai/Middleware/Verbs.hs view
@@ -44,18 +44,17 @@   , -- * Types     VerbMap   , Verb-  , getVerb   , -- ** Monad Transformer     VerbListenerT (..)   , execVerbListenerT-  , verbsToMiddleware   , -- * Utilities     lookupVerb+  , getVerb   , mapVerbs   ) where  -import           Network.Wai.Trans+import           Network.Wai (Request (..)) import           Network.HTTP.Types  import           Data.HashMap.Lazy (HashMap)@@ -115,6 +114,7 @@  {-# INLINEABLE lookupVerb #-} + -- * Verb Writer  -- | This is the monad for our DSL - where @r@ is the result type. We leave this@@ -143,22 +143,10 @@  {-# INLINEABLE execVerbListenerT #-} + instance MonadTrans (VerbListenerT r) where   lift = VerbListenerT . lift -- uses StateT ---- | Turn a map from HTTP verbs to middleware, into a middleware.-verbsToMiddleware :: MonadIO m =>-                     VerbListenerT (MiddlewareT m) m ()-                  -> MiddlewareT m-verbsToMiddleware vl app req respond = do-  let v = getVerb req-  vmap <- execVerbListenerT vl-  mMiddleware <- lookupVerb req v vmap-  fromMaybe (app req respond) $-    (\mid -> mid app req respond) <$> mMiddleware--{-# INLINEABLE verbsToMiddleware #-}  -- * Combinators 
wai-middleware-verbs.cabal view
@@ -1,5 +1,5 @@ Name:                   wai-middleware-verbs-Version:                0.1.1+Version:                0.2.0 Author:                 Athan Clark <athan.clark@gmail.com> Maintainer:             Athan Clark <athan.clark@gmail.com> License:                BSD3@@ -32,7 +32,6 @@                       , transformers-base                       , unordered-containers                       , wai-                      , wai-transformers >= 0.0.3  Executable example   if flag(Example)@@ -59,7 +58,7 @@                       , transformers-base                       , unordered-containers                       , wai-                      , wai-transformers >= 0.0.3+                      , wai-transformers >= 0.0.4                       , wai-middleware-content-type                       , warp