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