aboutsummaryrefslogtreecommitdiff
path: root/pandoc-server
diff options
context:
space:
mode:
Diffstat (limited to 'pandoc-server')
-rw-r--r--pandoc-server/pandoc-server.cabal2
-rw-r--r--pandoc-server/src/Text/Pandoc/Server.hs25
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