@@ -100,8 +100,9 @@ import System.IO (stderr)
100100import Text.HTML.TagSoup (renderTagsOptions, RenderOptions(..), Tag(..),
101101 renderOptions)
102102import qualified Data.ByteString as B
103−import Network.HTTP (findHeader, rspBody, simpleHTTP, RequestMethod(..),
104− HeaderName(..), mkRequest)
103+import Network.HTTP (findHeader, rspBody,
104+ RequestMethod(..), HeaderName(..), mkRequest)
105+import Network.Browser (browse, setAllowRedirects, request)
105106#ifdef EMBED_DATA_FILES
106107import Text.Pandoc.Data (dataFiles)
107108#else
@@ -562,12 +563,13 @@ fetchItem sourceDir s =
562563-- chart API, e.g.
563564-- | Read from a URL and return raw data and maybe mime type.
564565openURL :: String -> IO (B.ByteString, Maybe String)
565−openURL u = getBodyAndMimeType =<< simpleHTTP (getReq u)
566− where getReq v = case parseURI v of
567− Nothing -> error $ "Could not parse URI: " ++ v
568− Just u' -> mkRequest GET u'
569− getBodyAndMimeType (Left e) = fail (show e)
570− getBodyAndMimeType (Right r) = return (rspBody r, findHeader HdrContentType r)
566+openURL u = getBodyAndMimeType `fmap`
567+ browse (setAllowRedirects True >> request (getRequest' u))
568+ where getBodyAndMimeType (_, r) = (rspBody r, findHeader HdrContentType r)
569+ getRequest' uriString = case parseURI uriString of
570+ Nothing -> error ("Not a valid URL: " ++
571+ uriString)
572+ Just v -> mkRequest GET v
571573
572574--
573575-- Error reporting