git.iko.soy/typeable/pandoc
on master help sign in
Shared.openURL: Changed type from an Either.
4a90691John MacFarlane
src/Text/Pandoc/Shared.hs+9−6
@@ -124,6 +124,7 @@ import Text.Pandoc.Pretty (charWidth)
124import Text.Pandoc.Compat.Time
124import Text.Pandoc.Compat.Time
125import Data.Time.Clock.POSIX
125import Data.Time.Clock.POSIX
126import System.IO (stderr)
126import System.IO (stderr)
127+import System.IO.Error
127import System.IO.Temp
128import System.IO.Temp
128import Text.HTML.TagSoup (renderTagsOptions, RenderOptions(..), Tag(..),
129import Text.HTML.TagSoup (renderTagsOptions, RenderOptions(..), Tag(..),
129 renderOptions)
130 renderOptions)
@@ -730,17 +731,19 @@ readDataFileUTF8 userDir fname =
730 UTF8.toString `fmap` readDataFile userDir fname
731 UTF8.toString `fmap` readDataFile userDir fname
731
732
732-- | Read from a URL and return raw data and maybe mime type.
733-- | Read from a URL and return raw data and maybe mime type.
733−openURL :: String -> IO (Either E.SomeException (BS.ByteString, Maybe MimeType))
734+openURL :: String -> IO (BS.ByteString, Maybe MimeType)
734openURL u
735openURL u
735 | Just u'' <- stripPrefix "data:" u =
736 | Just u'' <- stripPrefix "data:" u =
736 let mime = takeWhile (/=',') u''
737 let mime = takeWhile (/=',') u''
737 contents = B8.pack $ unEscapeString $ drop 1 $ dropWhile (/=',') u''
738 contents = B8.pack $ unEscapeString $ drop 1 $ dropWhile (/=',') u''
738− in return $ Right (decodeLenient contents, Just mime)
739+ in return (decodeLenient contents, Just mime)
739#ifdef HTTP_CLIENT
740#ifdef HTTP_CLIENT
740− | otherwise = withSocketsDo $ E.try $ do
741+ | otherwise = withSocketsDo $ do
741 let parseReq = parseRequest
742 let parseReq = parseRequest
742− (proxy :: Either E.SomeException String) <- E.try $ getEnv "http_proxy"
743+ (proxy :: Either IOError String) <-
744+ tryIOError $ getEnv "http_proxy"
743− (useragent :: Either E.SomeException String) <- E.try $ getEnv "USER_AGENT"
745+ (useragent :: Either IOError String) <-
746+ tryIOError $ getEnv "USER_AGENT"
744 req <- parseReq u
747 req <- parseReq u
745 req' <- case proxy of
748 req' <- case proxy of
746 Left _ -> return req
749 Left _ -> return req
@@ -758,7 +761,7 @@ openURL u
758 return (BS.concat $ toChunks $ responseBody resp,
761 return (BS.concat $ toChunks $ responseBody resp,
759 UTF8.toString `fmap` lookup hContentType (responseHeaders resp))
762 UTF8.toString `fmap` lookup hContentType (responseHeaders resp))
760#else
763#else
761− | otherwise = E.try $ getBodyAndMimeType `fmap` browse
764+ | otherwise = getBodyAndMimeType `fmap` browse
762 (do liftIO $ UTF8.hPutStrLn stderr $ "Fetching " ++ u ++ "..."
765 (do liftIO $ UTF8.hPutStrLn stderr $ "Fetching " ++ u ++ "..."
763 setOutHandler $ const (return ())
766 setOutHandler $ const (return ())
764 setAllowRedirects True
767 setAllowRedirects True