module Get(readURL) where -- A simple program which takes a URL, and returns its contents. -- To compile this, you need to install the Haskell http package: -- -- http://www.haskell.org/http/ import Data.Char(intToDigit) import Network.HTTP import Network.URI import System.Environment(getArgs) import System.Exit(exitFailure) import System.IO(hPutStrLn, stderr) readURL :: String -> IO String readURL uri = case parseURI uri of Nothing -> error "Could not parse URI." Just uri -> do resp <- simpleHTTP (request uri) case resp of Right resp -> case rspCode resp of (2,0,0) -> do hPutStrLn stderr $ "Successfully read "++ show uri return (rspBody resp) _ -> error (httpError resp) Left connerr -> error (show connerr) where showRspCode (a,b,c) = map intToDigit [a,b,c] httpError resp = showRspCode (rspCode resp) ++ " " ++ rspReason resp request :: URI -> Request request uri = Request{ rqURI = uri, rqMethod = GET, rqHeaders = [], rqBody = "" }