{-# LANGUAGE OverloadedStrings #-} module Web.Base64 ( base64Encode , base64Encode' , base64Decode , removePaddingBase64Encoding ) where import qualified Data.ByteString.Char8 as B import qualified Data.Text as T import qualified Data.Text.Encoding as TE import qualified Data.ByteString.Base64.URL as BASE64 base64Decode :: T.Text -> T.Text base64Decode = operateOnText BASE64.decodeLenient base64Encode :: T.Text -> T.Text base64Encode = removePaddingBase64Encoding . operateOnText BASE64.encode base64Encode' :: B.ByteString -> T.Text base64Encode' = removePaddingBase64Encoding . TE.decodeUtf8 . BASE64.encode removePaddingBase64Encoding :: T.Text -> T.Text removePaddingBase64Encoding = T.dropWhileEnd (=='=') operateOnText :: (B.ByteString -> B.ByteString) -> T.Text -> T.Text operateOnText f = TE.decodeUtf8 . f . TE.encodeUtf8