{-# 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"