From 089474997c4512b9cb3bc975ae7093a5632799c9 Mon Sep 17 00:00:00 2001 From: Frans Date: Tue, 2 Feb 2021 17:32:01 +0100 Subject: [PATCH] Fixed a cookbook item: Consume a webpage with http conduit --- ...onduit-and-print-progress-along-the-way.md | 39 ++++++++++--------- 1 file changed, 21 insertions(+), 18 deletions(-) diff --git a/cookbook/Consume-a-webpage-with-http-conduit-and-print-progress-along-the-way.md b/cookbook/Consume-a-webpage-with-http-conduit-and-print-progress-along-the-way.md index df0f184..35c158d 100644 --- a/cookbook/Consume-a-webpage-with-http-conduit-and-print-progress-along-the-way.md +++ b/cookbook/Consume-a-webpage-with-http-conduit-and-print-progress-along-the-way.md @@ -1,23 +1,26 @@ ```haskell -import Control.Monad.IO.Class (liftIO) -import qualified Data.ByteString as S -import Data.Conduit -import Data.Conduit.Binary as CB -import Network.HTTP.Conduit +import Conduit (ResourceT, runResourceT) +import Control.Monad.IO.Class (liftIO) +import qualified Data.ByteString as BS +import Data.Conduit +import Data.Conduit.Binary as CB +import Network.HTTP.Conduit main :: IO () -main = withManager $ \manager -> do - req <- parseUrl "http://www.yesodweb.com/" - res <- http req manager - responseBody res $$+- printProgress =$ CB.sinkFile "yesodweb.html" +main = do + man <- newManager tlsManagerSettings + req <- parseRequest "http://www.yesodweb.com/" + runResourceT $ do + res <- http req man + sealConduitT (responseBody res) $$+- printProgress .| CB.sinkFile "yesodweb.html" -printProgress :: Conduit S.ByteString (ResourceT IO) S.ByteString -printProgress = - loop 0 +printProgress :: ConduitT BS.ByteString BS.ByteString (ResourceT IO) () +printProgress = loop 0 where - loop len = await >>= maybe (return ()) (\bs -> do - let len' = len + S.length bs - liftIO $ putStrLn $ "Bytes consumed: " ++ show len' - yield bs - loop len') -``` \ No newline at end of file + loop len = await >>= maybe (return ()) (showConsumed len) + showConsumed len bs = do + let len' = len + BS.length bs + liftIO $ putStrLn $ "bytes consumed " ++ show len' + yield bs + loop len' +```