X-Git-Url: http://gitweb.michael.orlitzky.com/?p=dead%2Flwn-epub.git;a=blobdiff_plain;f=src%2FLWN%2FHTTP.hs;h=d601365e686697a43fbe681d5b4e78830e5d6c6b;hp=3793f10ae7470966d5b1526bcdf435af05f6fb5a;hb=4f418d48ed53343f5547a79e325fdbb7e75a1da0;hpb=823c2383e7bfd649b2213faecd1586fa6c2b5473 diff --git a/src/LWN/HTTP.hs b/src/LWN/HTTP.hs index 3793f10..d601365 100644 --- a/src/LWN/HTTP.hs +++ b/src/LWN/HTTP.hs @@ -18,7 +18,7 @@ import Network.Curl ( ) import Network.Curl.Download (openURI) import System.Directory (doesFileExist, getTemporaryDirectory) -import System.IO (hClose, hPutStrLn, stderr) +import System.IO (hClose, hPutStrLn, stderr, stdout) import System.IO.Temp (openBinaryTempFile, openTempFile) import LWN.URI (filename) @@ -44,10 +44,13 @@ default_curl_opts = -- And we don't want to use a DNS cache anyway. CurlDNSCacheTimeout 0, + -- Follow redirects. + CurlFollowLocation True, + -- Give it a little time... CurlTimeout 45, - -- And let us know when things go wrong. + -- For debugging. CurlVerbose True ] @@ -60,14 +63,19 @@ make_cookie_jar = do return out_path get_page :: Maybe FilePath -> URLString -> IO (Maybe String) -get_page cookie_jar url = +get_page cookie_file url = withCurlDo $ do + hPutStrLn stdout ("Getting page: " ++ url ++ "...") + -- Create a curl instance. curl <- initialize -- Perform the request, and get back a CurlResponse object. -- The cast is needed to specify how we would like our headers -- and body returned (Strings). + putStrLn "Curl options:" + print curl_opts + resp <- do_curl_ curl url curl_opts :: IO CurlResponse -- Pull out the response code as a CurlCode. @@ -83,9 +91,9 @@ get_page cookie_jar url = return Nothing where get_opts = - case cookie_jar of + case cookie_file of Nothing -> [] - Just cookies -> [ CurlCookieJar cookies ] + Just cookies -> [ CurlCookieFile cookies ] curl_opts = default_curl_opts ++ get_opts @@ -93,6 +101,8 @@ get_page cookie_jar url = log_in :: FilePath -> String -> String -> IO Bool log_in cookie_jar username password = withCurlDo $ do + hPutStrLn stdout ("Logging " ++ username ++ " in...") + -- Create a curl instance. curl <- initialize