eternal-0.0.1: src/Control/Eternal/System/HTTP.hs
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