packages feed

freckle-memcached-0.0.0.1: library/Freckle/App/Memcached/MD5.hs

module Freckle.App.Memcached.MD5
  ( md5CacheKey
  , md5Key
  , md5Text
  ) where

import Prelude

import Data.ByteString.Lazy qualified as BSL
import Data.Digest.Pure.MD5 qualified as Digest
import Data.Text (Text)
import Data.Text qualified as T
import Data.Text.Encoding qualified as T
import Freckle.App.Memcached.CacheKey

md5CacheKey :: Show a => a -> CacheKey
md5CacheKey = either (error "md5 is always cacheable") id . cacheKey . md5Key

-- | Pack any showable into an md5 encoded text
md5Key :: Show a => a -> Text
md5Key = md5Text . T.pack . show

md5Text :: Text -> Text
md5Text = T.pack . show . Digest.md5 . BSL.fromStrict . T.encodeUtf8