@@ -1,4 +1,4 @@
1−{-# LANGUAGE ExistentialQuantification #-}
1+{-# LANGUAGE Rank2Types #-}
2module Network.Wai
2module Network.Wai
3 ( -- * Data types
3 ( -- * Data types
4 -- ** Request method
4 -- ** Request method
@@ -23,6 +23,8 @@ module Network.Wai
23 , Status (..)
23 , Status (..)
24 , statusCode
24 , statusCode
25 , statusMessage
25 , statusMessage
26 -- * WAI interface
28 -- * WAI interface
27 , Request (..)
29 , Request (..)
28 , Response (..)
30 , Response (..)
@@ -233,6 +235,9 @@ statusMessage Status405 = B8.pack "Method Not Allowed"
233statusMessage Status500 = B8.pack "Internal Server Error"
235statusMessage Status500 = B8.pack "Internal Server Error"
234statusMessage (Status _ m) = m
236statusMessage (Status _ m) = m
238+data Enumerator = Enumerator (forall a.
239+ ((a -> B.ByteString -> IO (Either a a)) -> a -> IO a))
236data Request = Request
241data Request = Request
237 { requestMethod :: Method
242 { requestMethod :: Method
238 , httpVersion :: HttpVersion
243 , httpVersion :: HttpVersion
@@ -250,7 +255,7 @@ data Request = Request
250data Response = Response
255data Response = Response
251 { status :: Status
256 { status :: Status
252 , headers :: [(ResponseHeader, B.ByteString)]
257 , headers :: [(ResponseHeader, B.ByteString)]
253− , body :: Either FilePath ((B.ByteString -> IO ()) -> IO ())
258+ , body :: Either FilePath Enumerator
256type Application = Request -> IO Response
261type Application = Request -> IO Response