pandoc-server: Switch from base64 to base64-bytestring.

See #9233.
This commit is contained in:
John MacFarlane
2023-12-06 09:11:28 -08:00
parent 8b523749ae
commit e7348b4f76
2 changed files with 11 additions and 16 deletions
+1 -1
View File
@@ -54,7 +54,7 @@ library
containers >= 0.6.0.1 && < 0.7,
aeson >= 2.0 && < 2.3,
bytestring >= 0.9 && < 0.13,
base64 >= 0.4 && < 0.5,
base64-bytestring >= 0.1 && < 1.3,
doctemplates >= 0.11 && < 0.12,
data-default >= 0.4 && < 0.8,
text >= 1.1.1.0 && < 2.2,
+10 -15
View File
@@ -29,7 +29,7 @@ import qualified Data.Text.Lazy.Encoding as TLE
import Data.Maybe (fromMaybe)
import qualified Data.ByteString as BS
import qualified Data.ByteString.Lazy as BL
import Data.ByteString.Base64 (decodeBase64, encodeBase64)
import qualified Data.ByteString.Base64 as Base64 (decodeLenient, encode)
import Data.Default
import Control.Monad (when, unless, foldM)
import qualified Data.Set as Set
@@ -111,15 +111,11 @@ newtype Blob = Blob BL.ByteString
deriving (Show, Eq)
instance ToJSON Blob where
toJSON (Blob bs) = toJSON (encodeBase64 $ BL.toStrict bs)
toJSON (Blob bs) = toJSON (UTF8.toText . Base64.encode $ BL.toStrict bs)
instance FromJSON Blob where
parseJSON = withText "Blob" $ \t -> do
let inp = UTF8.fromText t
case decodeBase64 inp of
Right bs -> return $ Blob $ BL.fromStrict bs
Left _ -> -- treat as regular text
return $ Blob $ BL.fromStrict inp
parseJSON = withText "Blob" $
pure . Blob . BL.fromStrict . Base64.decodeLenient . UTF8.fromText
-- This is the data to be supplied by the JSON payload
-- of requests. Maybe values may be omitted and will be
@@ -236,7 +232,8 @@ server = convertBytes
-- handleErr =<< liftIO (runIO (convert' params))
-- will allow the IO operations.
convertText params = handleErr $
runPure (convert' return (return . encodeBase64 . BL.toStrict) params)
runPure (convert' return (return . UTF8.toText .
Base64.encode . BL.toStrict) params)
convertBytes params = handleErr $
runPure (convert' (return . UTF8.fromText) (return . BL.toStrict) params)
@@ -245,7 +242,7 @@ server = convertBytes
runPure
(convert'
(\t -> Succeeded t False . map toMessage <$> getLog)
(\bs -> Succeeded (encodeBase64 (BL.toStrict bs)) True
(\bs -> Succeeded (UTF8.toText $ Base64.encode (BL.toStrict bs)) True
. map toMessage <$> getLog)
params)
@@ -341,11 +338,9 @@ server = convertBytes
let reader = case readerSpec of
TextReader r -> r readeropts
ByteStringReader r -> \t -> do
let eitherbs = decodeBase64 $ UTF8.fromText t
case eitherbs of
Left errt -> throwError $ PandocSomeError errt
Right bs -> r readeropts $ BL.fromStrict bs
ByteStringReader r ->
r readeropts . BL.fromStrict . Base64.decodeLenient
. UTF8.fromText
let writer d@(Pandoc meta _) = do
case lookupMetaString "lang" meta of