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