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