on master help sign in
Added ResponseBuilder constructor
commit709258d1e5ff17eda441e6e07b75951fdb493ff9 authorMichael <michael@snoyman.com> dateWed 5 Jan 2011, 23:34 (16 years ago) parent0e5abc5
1 file changed+6−6
Network/Wai.hs+6−6
Network/Wai.hs+6−6
@@ -67,7 +67,6 @@ module Network.Wai
6767 , Application
6868 , Middleware
6969 -- * Response body smart constructors
70− , responseBuilder
7170 , responseLBS
7271 ) where
7372
@@ -77,7 +76,7 @@ import qualified Data.ByteString.Lazy as L
7776import Data.Char (toLower)
7877import Data.String (IsString (..))
7978import Data.Typeable (Typeable)
80−import Data.Enumerator (Iteratee, ($$), joinI, enumList, run_)
79+import Data.Enumerator (Iteratee, ($$), joinI, run_)
8180import qualified Data.Enumerator as E
8281import Data.Enumerator.IO (enumFile)
8382import Blaze.ByteString.Builder (Builder, fromByteString, fromLazyByteString)
@@ -220,6 +219,7 @@ data Request = Request
220219
221220data Response
222221 = ResponseFile Status ResponseHeaders FilePath
222+ | ResponseBuilder Status ResponseHeaders Builder
223223 | ResponseEnumerator (forall a. ResponseEnumerator a)
224224 deriving Typeable
225225
@@ -230,12 +230,12 @@ responseEnumerator :: Response -> ResponseEnumerator a
230230responseEnumerator (ResponseEnumerator e) f = e f
231231responseEnumerator (ResponseFile s h fp) f =
232232 run_ $ enumFile fp $$ joinI $ E.map fromByteString $$ f s h
233−
234−responseBuilder :: Status -> ResponseHeaders -> Builder -> Response
235−responseBuilder s h b = ResponseEnumerator $ \f -> run_ $ enumList 1 [b] $$ f s h
233+responseEnumerator (ResponseBuilder s h b) f = run_ $ do
234+ E.yield () $ E.Chunks [b]
235+ f s h
236236
237237responseLBS :: Status -> ResponseHeaders -> L.ByteString -> Response
238−responseLBS s h = responseBuilder s h . fromLazyByteString
238+responseLBS s h = ResponseBuilder s h . fromLazyByteString
239239
240240type Application = Request -> Iteratee B.ByteString IO Response
241241