{-# LANGUAGE UnicodeSyntax #-} module Control.Eternal.System.HTTP ( getHTTP , download ) where import Network.Socket (withSocketsDo) import Network.HTTP.Conduit import Data.Conduit.Binary (sinkFile) import Network.HTTP.Types import qualified Data.Conduit as C import qualified Data.ByteString.Lazy as L import qualified Codec.Binary.UTF8.String as S import Control.Monad.IO.Class (liftIO) getHTTP :: [Char] → IO String getHTTP url = withSocketsDo $ simpleHttp url >>= \bs → return $ S.decode $ L.unpack bs download :: String → String → IO() download url filename = withSocketsDo $ do irequest ← liftIO $ parseUrl url withManager $ \manager → do let request = irequest { method = methodGet } response ← http request manager responseBody response C.$$+- sinkFile filename