@@ -76,7 +76,6 @@ module Text.Pandoc.Shared (
7676 renderTags',
7777 -- * File handling
7878 inDirectory,
79− openURL,
8079 collapseFilePath,
8180 filteredFilesFromArchive,
8281 -- * URI handling
@@ -98,19 +97,17 @@ import Text.Pandoc.Definition
9897import Text.Pandoc.Walk
9998import Text.Pandoc.Builder (Inlines, Blocks, ToMetaValue(..))
10099import qualified Text.Pandoc.Builder as B
101−import qualified Text.Pandoc.UTF8 as UTF8
102100import Data.Char ( toLower, isLower, isUpper, isAlpha,
103101 isLetter, isDigit, isSpace )
104102import Data.List ( find, stripPrefix, intercalate )
105103import Data.Maybe (mapMaybe)
106104import Data.Version ( showVersion )
107105import qualified Data.Map as M
108−import Network.URI ( URI(uriScheme), escapeURIString, unEscapeString, parseURI )
106+import Network.URI ( URI(uriScheme), escapeURIString, parseURI )
109107import qualified Data.Set as Set
110108import System.Directory
111109import System.FilePath (splitDirectories, isPathSeparator)
112110import qualified System.FilePath.Posix as Posix
113−import Text.Pandoc.MIME (MimeType)
114111import Data.Generics (Typeable, Data)
115112import qualified Control.Monad.State.Strict as S
116113import qualified Control.Exception as E
@@ -118,33 +115,16 @@ import Control.Monad (msum, unless, MonadPlus(..))
118115import Text.Pandoc.Pretty (charWidth)
119116import Text.Pandoc.Generic (bottomUp)
120117import Text.Pandoc.Compat.Time
121−import System.IO.Error
122118import System.IO.Temp
123119import Text.HTML.TagSoup (renderTagsOptions, RenderOptions(..), Tag(..),
124120 renderOptions)
125121import Data.Monoid ((<>))
126−import qualified Data.ByteString as BS
127−import qualified Data.ByteString.Char8 as B8
128−import Data.ByteString.Base64 (decodeLenient)
129122import Data.Sequence (ViewR(..), ViewL(..), viewl, viewr)
130123import qualified Data.Text as T
131−import Data.ByteString.Lazy (toChunks)
132124import qualified Data.ByteString.Lazy as BL
133125import Paths_pandoc (version)
134−
135126import Codec.Archive.Zip
136127
137−import Network.HTTP.Client (httpLbs, responseBody, responseHeaders,
138− Request(port,host,requestHeaders),
139− HttpException)
140−import Network.HTTP.Client (parseRequest)
141−import Network.HTTP.Client (newManager)
142−import Network.HTTP.Client.Internal (addProxy)
143−import Network.HTTP.Client.TLS (tlsManagerSettings)
144−import System.Environment (getEnv)
145−import Network.HTTP.Types.Header ( hContentType, hUserAgent)
146−import Network (withSocketsDo)
147−
148128-- | Version number of pandoc library.
149129pandocVersion :: String
150130pandocVersion = showVersion version
@@ -606,36 +586,6 @@ inDirectory path action = E.bracket
606586 setCurrentDirectory
607587 (const $ setCurrentDirectory path >> action)
608588
609−-- | Read from a URL and return raw data and maybe mime type.
610−openURL :: String -> IO (Either HttpException (BS.ByteString, Maybe MimeType))
611−openURL u
612− | Just u'' <- stripPrefix "data:" u =
613− let mime = takeWhile (/=',') u''
614− contents = B8.pack $ unEscapeString $ drop 1 $ dropWhile (/=',') u''
615− in return $ Right (decodeLenient contents, Just mime)
616− | otherwise = E.try $ withSocketsDo $ do
617− let parseReq = parseRequest
618− (proxy :: Either IOError String) <-
619− tryIOError $ getEnv "http_proxy"
620− (useragent :: Either IOError String) <-
621− tryIOError $ getEnv "USER_AGENT"
622− req <- parseReq u
623− req' <- case proxy of
624− Left _ -> return req
625− Right pr -> (parseReq pr >>= \r ->
626− return $ addProxy (host r) (port r) req)
627− `mplus` return req
628− req'' <- case useragent of
629− Left _ -> return req'
630− Right ua -> do
631− let headers = requestHeaders req'
632− let useragentheader = (hUserAgent, B8.pack ua)
633− let headers' = useragentheader:headers
634− return $ req' {requestHeaders = headers'}
635− resp <- newManager tlsManagerSettings >>= httpLbs req''
636− return (BS.concat $ toChunks $ responseBody resp,
637− UTF8.toString `fmap` lookup hContentType (responseHeaders resp))
638−
639589--
640590-- Error reporting
641591--