module Network.AWS.CloudFront.SignedCookies.Encoding
( base64Encode
, base64Decode
) where
import Network.AWS.CloudFront.SignedCookies.Types (ByteString, Text)
import qualified Data.ByteString.Base64 as Base64
import qualified Data.Text as Text
import qualified Data.Text.Encoding as Text
base64Encode :: ByteString -> Text
base64Encode :: ByteString -> Text
base64Encode =
(Char -> Char) -> Text -> Text
Text.map Char -> Char
charEncode (Text -> Text) -> (ByteString -> Text) -> ByteString -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ByteString -> Text
Text.decodeUtf8 (ByteString -> Text)
-> (ByteString -> ByteString) -> ByteString -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ByteString -> ByteString
Base64.encode
where
charEncode :: Char -> Char
charEncode =
\case
Char
'+' -> Char
'-'
Char
'=' -> Char
'_'
Char
'/' -> Char
'~'
Char
x -> Char
x
base64Decode :: Text -> Either String ByteString
base64Decode :: Text -> Either String ByteString
base64Decode =
ByteString -> Either String ByteString
Base64.decode (ByteString -> Either String ByteString)
-> (Text -> ByteString) -> Text -> Either String ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> ByteString
Text.encodeUtf8 (Text -> ByteString) -> (Text -> Text) -> Text -> ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Char -> Char) -> Text -> Text
Text.map Char -> Char
charDecode
where
charDecode :: Char -> Char
charDecode =
\case
Char
'-' -> Char
'+'
Char
'_' -> Char
'='
Char
'~' -> Char
'/'
Char
x -> Char
x