module Network.Wai.Handler.Helper ( requestBodyHandle ) where import System.IO (Handle) import qualified Data.ByteString as B import Data.ByteString.Lazy.Internal (defaultChunkSize) import Network.Wai (Source (..)) requestBodyHandle :: Handle -> Int -> Source requestBodyHandle _ 0 = Source $ return Nothing requestBodyHandle h len = Source $ do bs <- B.hGet h $ min len defaultChunkSize let newLen = len - B.length bs return $ Just (bs, requestBodyHandle h newLen)