wai-transformers 0.0.5 → 0.0.5.1
raw patch · 2 files changed
+26/−1 lines, 2 filesdep +wai-websocketsdep +websocketsPVP ok
version bump matches the API change (PVP)
Dependencies added: wai-websockets, websockets
API changes (from Hackage documentation)
Files
- src/Network/Wai/Trans.hs +23/−0
- wai-transformers.cabal +3/−1
src/Network/Wai/Trans.hs view
@@ -38,14 +38,20 @@ import Network.Wai+import Network.Wai.Handler.WebSockets+import Network.WebSockets hiding (Request, Response) import Control.Monad.IO.Class import Control.Monad.Catch ++-- * WAI+ -- | Isomorphic to @Kleisli (ContT ResponseReceived m) Request Response@ type ApplicationT m = Request -> (Response -> m ResponseReceived) -> m ResponseReceived type MiddlewareT m = ApplicationT m -> ApplicationT m +-- ** Generalization liftApplication :: MonadIO m => (forall a. m a -> IO a) -> Application -> ApplicationT m liftApplication run app req resp = liftIO (app req (run . resp))@@ -59,6 +65,8 @@ runMiddlewareT :: MonadIO m => (forall a. m a -> IO a) -> MiddlewareT m -> Middleware runMiddlewareT run mid app = runApplicationT run (mid (liftApplication run app)) +-- ** Monad Morphisms+ hoistApplicationT :: ( Monad m , Monad n ) => (forall a. m a -> n a)@@ -77,6 +85,7 @@ hoistMiddlewareT to from mid = hoistApplicationT to from . mid . hoistApplicationT from to +-- ** Exception Catching catchApplicationT :: ( MonadCatch m , Exception e@@ -90,7 +99,21 @@ catchMiddlewareT x f app = (x app) `catchApplicationT` (\e -> f e app) +-- ** Utils+ readingRequest :: Monad m => (Request -> m ()) -> MiddlewareT m readingRequest f app req resp = do f req app req resp+++-- * Websockets++type ServerAppT m = PendingConnection -> m ()++-- | Respond with the WebSocket server when applicable, as a middleware+websocketsOrT :: (MonadIO m) => (forall a. m a -> IO a) -> ConnectionOptions -> ServerAppT m -> MiddlewareT m+websocketsOrT run cOpts server app req respond =+ let server' pend = run $ server pend+ app' = liftApplication run . websocketsOr cOpts server' $ runApplicationT run app+ in app' req respond
wai-transformers.cabal view
@@ -1,5 +1,5 @@ Name: wai-transformers-Version: 0.0.5+Version: 0.0.5.1 Author: Athan Clark <athan.clark@gmail.com> Maintainer: Athan Clark <athan.clark@gmail.com> License: BSD3@@ -18,7 +18,9 @@ Build-Depends: base >= 4.8 && < 5 , exceptions , wai+ , wai-websockets , transformers+ , websockets Source-Repository head Type: git