@@ -4,11 +4,12 @@ module Network.Wai.Handler.Helper
44
55import System.IO (Handle)
66import qualified Data.ByteString as B
7+import Data.ByteString.Lazy.Internal (defaultChunkSize)
8+import Network.Wai (Source (..))
79
8−requestBodyHandle :: Handle -> Int -> IO (Maybe (B.ByteString, Int))
9−requestBodyHandle _ 0 = return Nothing
10−requestBodyHandle h len = do
11− let maxChunkSize = 1024
12− bs <- B.hGet h $ min len maxChunkSize
10+requestBodyHandle :: Handle -> Int -> Source
11+requestBodyHandle _ 0 = Source $ return Nothing
12+requestBodyHandle h len = Source $ do
13+ bs <- B.hGet h $ min len defaultChunkSize
1314 let newLen = len - B.length bs
14− return $ Just (bs, newLen)
15+ return $ Just (bs, requestBodyHandle h newLen)