on master help sign in
Update wai-eventsource to use Conduits.
2f7f82fBardur Arantsson
wai-eventsource/src/Main.hs+9−7
@@ -8,10 +8,10 @@ import Control.Concurrent.Chan
8import Network.Wai.Handler.Warp (run)
8import Network.Wai.Handler.Warp (run)
9import Network.Wai
9import Network.Wai
10import Network.HTTP.Types (statusOK)
10import Network.HTTP.Types (statusOK)
11−import Data.Enumerator (run_, ($$))
11+import qualified Data.Conduit as C
12−import Data.Enumerator.List (generateM)
13import Data.Time.Clock.POSIX
12import Data.Time.Clock.POSIX
14import Blaze.ByteString.Builder.Char.Utf8 (fromString)
13import Blaze.ByteString.Builder.Char.Utf8 (fromString)
14+import Blaze.ByteString.Builder (Builder)
15
15
16import EventStream
16import EventStream
17
17
@@ -27,14 +27,16 @@ app chan req =
27
27
28
28
29res :: Chan ServerEvent -> Response
29res :: Chan ServerEvent -> Response
30−res chan = ResponseEnumerator (resE chan)
30+res chan = ResponseSource statusOK [("Content-Type", "text/event-stream")] (resE chan)
31
31
32
32
33−resE :: Chan ServerEvent -> ResponseEnumerator a
33+resE :: Chan ServerEvent -> C.Source IO Builder
34−resE chan genIter =
34+resE chan =
35− run_ $ generateM (fmap eventToBuilder $ readChan chan) $$ iter
35+ C.sourceIO ign (\_ -> ign) (\_ -> fmap (f . eventToBuilder) $ readChan chan)
36 where
36 where
37− iter = genIter statusOK [("Content-Type", "text/event-stream")]
37+ ign = return ()
38+ f Nothing = C.Closed
39+ f (Just b) = C.Open b
38
40
39
41
40source :: Chan ServerEvent -> IO ()
42source :: Chan ServerEvent -> IO ()
wai-eventsource/wai-eventsource.cabal+1−1
@@ -27,10 +27,10 @@ Executable wai-eventsource
27 base >= 4.3 && < 5
27 base >= 4.3 && < 5
28 , bytestring >= 0.9.1.4 && < 0.10
28 , bytestring >= 0.9.1.4 && < 0.10
29 , blaze-builder >= 0.3 && < 0.4
29 , blaze-builder >= 0.3 && < 0.4
30+ , conduit >= 0.0 && < 0.1
30 , MonadCatchIO-transformers >= 0.2.1 && < 0.3
31 , MonadCatchIO-transformers >= 0.2.1 && < 0.3
31 , mtl >= 2 && < 3
32 , mtl >= 2 && < 3
32 , http-types >= 0.6 && < 0.7
33 , http-types >= 0.6 && < 0.7
33− , enumerator >= 0.4.8 && < 0.5
34 , time >= 1.2 && < 1.4
34 , time >= 1.2 && < 1.4
35 , wai >= 0.4
35 , wai >= 0.4
36 , warp >= 0.4
36 , warp >= 0.4