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