based/src/Encoding/Base62.hs

33 lines
1021 B
Haskell
Raw Normal View History

module Encoding.Base62
( enc62
, dec62
) where
import qualified Data.Word.Base62 as B62
import Text.Read (readMaybe)
import Data.Maybe (fromMaybe)
import Data.ByteString.UTF8 as BSU -- from utf8-string
import qualified Data.Bytes as Bytes
import Data.Bytes.Text.Latin1 as Latin1
import qualified Data.ByteString.Char8 as C
import qualified Data.Text as T
import qualified Data.Text.Encoding as T
-- import qualified Data.Text.IO as T
dec62 :: String -> String
dec62 input =
let decoded = B62.decode128 (Bytes.fromByteString (BSU.fromString input))
in fromMaybe "Error decoding Base62.\n" (show <$> decoded)
stringToInt :: String -> Maybe Integer
stringToInt = readMaybe
enc62 :: String -> String
enc62 input =
let intValue = fromMaybe (error "Error: Unable to convert input string to integer") (stringToInt input)
encoded = B62.encode64 (fromIntegral intValue)
encodedText = T.decodeUtf8 (BSU.fromString (Latin1.toString (Bytes.fromByteArray encoded)))
in T.unpack encodedText