packages feed

wai-websockets 2.1.0.2 → 3.0.0

raw patch · 2 files changed

+11/−31 lines, 2 filesdep −conduitdep ~wai

Dependencies removed: conduit

Dependency ranges changed: wai

Files

Network/Wai/Handler/WebSockets.hs view
@@ -10,13 +10,10 @@ import              Data.ByteString                 (ByteString) import qualified    Data.ByteString.Char8           as BC import qualified    Data.CaseInsensitive            as CI-import              Data.Conduit-import              Data.IORef                      (newIORef, readIORef, writeIORef) import              Network.HTTP.Types              (status500) import qualified    Network.Wai                     as Wai import qualified    Network.WebSockets              as WS import qualified    Network.WebSockets.Connection   as WS-import              System.IO.Streams               (InputStream, OutputStream) import qualified    System.IO.Streams               as Streams  --------------------------------------------------------------------------------@@ -29,10 +26,10 @@              -> WS.ServerApp              -> Wai.Application              -> Wai.Application-websocketsOr opts app backup req =+websocketsOr opts app backup req sendResponse =     case websocketsApp opts app req of-        Nothing -> backup req-        Just res -> return res+        Nothing -> backup req sendResponse+        Just res -> sendResponse res  -------------------------------------------------------------------------------- websocketsApp :: WS.ConnectionOptions@@ -61,13 +58,15 @@ runWebSockets :: WS.ConnectionOptions               -> WS.RequestHead               -> (WS.PendingConnection -> IO a)-              -> Source IO ByteString-              -> Sink ByteString IO ()+              -> IO ByteString+              -> (ByteString -> IO ())               -> IO a runWebSockets opts req app src sink = do -    is <- srcToInput src-    os <- sinkToOutput sink >>= Streams.builderStream+    is <- Streams.makeInputStream $ do+        bs <- src+        return $ if BC.null bs then Nothing else Just bs+    os <- Streams.makeOutputStream (maybe (return ()) sink) >>= Streams.builderStream      let pc = WS.PendingConnection                 { WS.pendingOptions     = opts@@ -78,20 +77,3 @@                 }      app pc--srcToInput :: Source IO ByteString -> IO (InputStream ByteString)-srcToInput src0 = do-    (rsrc0, ()) <- src0 $$+ return ()-    ref <- newIORef rsrc0-    Streams.makeInputStream $ do-        rsrc <- readIORef ref-        (rsrc', mbs) <- rsrc $$++ await-        writeIORef ref rsrc'-        return mbs--sinkToOutput :: Sink ByteString IO () -> IO (OutputStream ByteString)-sinkToOutput sink =-    Streams.makeOutputStream output-  where-    output Nothing = return ()-    output (Just bs) = yield bs $$ sink
wai-websockets.cabal view
@@ -1,5 +1,5 @@ Name:                wai-websockets-Version:             2.1.0.2+Version:             3.0.0 Synopsis:            Provide a bridge betweeen WAI and the websockets package. License:             MIT License-file:        LICENSE@@ -19,8 +19,7 @@ Library   Build-Depends:     base               >= 3        && < 5                    , bytestring         >= 0.9.1.4-                   , conduit            >= 0.5      && < 1.2-                   , wai                >= 2.1      && < 2.2+                   , wai                >= 3.0      && < 3.1                    , blaze-builder      >= 0.2.1.4  && < 0.4                    , case-insensitive   >= 0.2                    , network            >= 2.2.1.5@@ -35,7 +34,6 @@   if flag(example)     buildable: True     Build-Depends:   base               >= 3 && < 5-                   , conduit                    , wai-websockets                    , websockets                    , warp