diff options
| author | John MacFarlane <[email protected]> | 2023-12-06 09:11:07 -0800 |
|---|---|---|
| committer | John MacFarlane <[email protected]> | 2023-12-06 09:11:28 -0800 |
| commit | e7348b4f769eb79973cdf52b11ec2a89bbca4a7f (patch) | |
| tree | 0da74f927278f0c8612e2320ea8e7adc7b50bd93 /pandoc-server | |
| parent | 8b523749aebb67f709fe7348b412f3e5e629ceb4 (diff) | |
pandoc-server: Switch from base64 to base64-bytestring.
See #9233.
Diffstat (limited to 'pandoc-server')
| -rw-r--r-- | pandoc-server/pandoc-server.cabal | 2 | ||||
| -rw-r--r-- | pandoc-server/src/Text/Pandoc/Server.hs | 25 |
2 files changed, 11 insertions, 16 deletions
diff --git a/pandoc-server/pandoc-server.cabal b/pandoc-server/pandoc-server.cabal index 495e3828f..9e51ab8d2 100644 --- a/pandoc-server/pandoc-server.cabal +++ b/pandoc-server/pandoc-server.cabal @@ -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, diff --git a/pandoc-server/src/Text/Pandoc/Server.hs b/pandoc-server/src/Text/Pandoc/Server.hs index 7cafa44bf..40c24672f 100644 --- a/pandoc-server/src/Text/Pandoc/Server.hs +++ b/pandoc-server/src/Text/Pandoc/Server.hs @@ -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 |
