wai-transformers 0.0.3 → 0.0.4
raw patch · 3 files changed
+26/−4 lines, 3 filesdep +exceptionsdep ~basesetup-changed
Dependencies added: exceptions
Dependency ranges changed: base
Files
- Setup.hs +2/−0
- src/Network/Wai/Trans.hs +21/−2
- wai-transformers.cabal +3/−2
+ Setup.hs view
@@ -0,0 +1,2 @@+import Distribution.Simple+main = defaultMain
src/Network/Wai/Trans.hs view
@@ -19,19 +19,24 @@ module Network.Wai.Trans- ( module X+ ( -- * Types+ module Network.Wai , ApplicationT , MiddlewareT , liftApplication , liftMiddleware , runApplicationT , runMiddlewareT+ , -- * Exception catching+ catchApplicationT+ , catchMiddlewareT ) where -import Network.Wai as X+import Network.Wai import Control.Monad.IO.Class+import Control.Monad.Catch -- | Isomorphic to @Kleisli (ContT ResponseReceived m) Request Response@ type ApplicationT m = Request -> (Response -> m ResponseReceived) -> m ResponseReceived@@ -49,4 +54,18 @@ runMiddlewareT :: MonadIO m => (forall a. m a -> IO a) -> MiddlewareT m -> Middleware runMiddlewareT run mid app = runApplicationT run (mid (liftApplication run app))+++catchApplicationT :: ( MonadCatch m+ , Exception e+ ) => ApplicationT m -> (e -> ApplicationT m) -> ApplicationT m+catchApplicationT x f req respond =+ (x req respond) `catch` (\e -> f e req respond)++catchMiddlewareT :: ( MonadIO m+ , MonadCatch m+ , Exception e+ ) => MiddlewareT m -> (e -> MiddlewareT m) -> MiddlewareT m+catchMiddlewareT x f app =+ (x app) `catchApplicationT` (\e -> f e app)
wai-transformers.cabal view
@@ -1,5 +1,5 @@ Name: wai-transformers-Version: 0.0.3+Version: 0.0.4 Author: Athan Clark <athan.clark@gmail.com> Maintainer: Athan Clark <athan.clark@gmail.com> License: BSD3@@ -15,7 +15,8 @@ HS-Source-Dirs: src GHC-Options: -Wall Exposed-Modules: Network.Wai.Trans- Build-Depends: base >= 4.6 && < 5+ Build-Depends: base >= 4.8 && < 5+ , exceptions , wai , transformers