Type-specialized versions of sendChunk

This commit is contained in:
Michael Snoyman 2013-03-21 11:42:20 +02:00
parent 968b96e0b1
commit c16184eb40
2 changed files with 39 additions and 2 deletions

View File

@ -58,6 +58,11 @@ module Yesod.Core.Handler
, respondSource , respondSource
, sendChunk , sendChunk
, sendFlush , sendFlush
, sendChunkBS
, sendChunkLBS
, sendChunkText
, sendChunkLazyText
, sendChunkHtml
-- ** Redirecting -- ** Redirecting
, RedirectUrl (..) , RedirectUrl (..)
, redirect , redirect
@ -153,6 +158,7 @@ import qualified Text.Blaze.Html.Renderer.Text as RenderText
import Text.Hamlet (Html, HtmlUrl, hamlet) import Text.Hamlet (Html, HtmlUrl, hamlet)
import qualified Data.ByteString as S import qualified Data.ByteString as S
import qualified Data.ByteString.Lazy as L
import qualified Data.Map as Map import qualified Data.Map as Map
import Data.Conduit (Source) import Data.Conduit (Source)
@ -941,3 +947,33 @@ sendChunk = yield . toFlushBuilder
-- Since 1.2.0 -- Since 1.2.0
sendFlush :: Source (HandlerT site IO) (Flush Builder) sendFlush :: Source (HandlerT site IO) (Flush Builder)
sendFlush = yield Flush sendFlush = yield Flush
-- | Type-specialized version of 'sendChunk' for strict @ByteString@s.
--
-- Since 1.2.0
sendChunkBS :: S.ByteString -> Source (HandlerT site IO) (Flush Builder)
sendChunkBS = sendChunk
-- | Type-specialized version of 'sendChunk' for lazy @ByteString@s.
--
-- Since 1.2.0
sendChunkLBS :: L.ByteString -> Source (HandlerT site IO) (Flush Builder)
sendChunkLBS = sendChunk
-- | Type-specialized version of 'sendChunk' for strict @Text@s.
--
-- Since 1.2.0
sendChunkText :: T.Text -> Source (HandlerT site IO) (Flush Builder)
sendChunkText = sendChunk
-- | Type-specialized version of 'sendChunk' for lazy @Text@s.
--
-- Since 1.2.0
sendChunkLazyText :: TL.Text -> Source (HandlerT site IO) (Flush Builder)
sendChunkLazyText = sendChunk
-- | Type-specialized version of 'sendChunk' for @Html@s.
--
-- Since 1.2.0
sendChunkHtml :: Html -> Source (HandlerT site IO) (Flush Builder)
sendChunkHtml = sendChunk

View File

@ -13,7 +13,8 @@ app :: LiteApp
app = dispatchTo $ respondSource typeHtml $ do app = dispatchTo $ respondSource typeHtml $ do
sendChunk ("Hello " :: String) sendChunk ("Hello " :: String)
sendChunk ("World" :: ByteString) sendChunk ("World" :: ByteString)
sendChunk ("!" :: Text) sendChunk ("!\n" :: Text)
sendChunkHtml "<&>"
test :: String test :: String
-> (SResponse -> Session ()) -> (SResponse -> Session ())
@ -28,4 +29,4 @@ specs :: Spec
specs = describe "Streaming" $ do specs = describe "Streaming" $ do
test "works" $ \sres -> do test "works" $ \sres -> do
assertStatus 200 sres assertStatus 200 sres
assertBody "Hello World!" sres assertBody "Hello World!\n&lt;&amp;&gt;" sres