{-# LANGUAGE OverloadedStrings #-} module Main where import qualified Data.ByteString.Lazy as BL import Data.String (fromString) import qualified Network.Connection as C import qualified Network.MiniHTTP.Client as Client import qualified Network.MiniHTTP.URL as URL import Network.MiniHTTP.Marshal (emptyHeaders) import Network.MiniHTTP.HTTPConnection (sourceToLBS) import OpenSSL (withOpenSSL) import System.Environment (getArgs) main = withOpenSSL main' main' = do args <- getArgs case args of [urlstring] -> do case URL.parse $ fromString urlstring of Nothing -> fail "Cannot parse URL" Just url -> do (conn, reply, msource) <- Client.fetchBasic emptyHeaders url print reply case msource of Nothing -> C.close conn Just source -> do lbs <- sourceToLBS source BL.putStr lbs C.close conn _ -> fail "Please give a URL as the only argument"