postie-0.6.0.2: src/Network/Mail/Postie/SessionID.hs
module Network.Mail.Postie.SessionID
( SessionID,
-- | Unique session identifier
mkSessionID,
-- | Creates a SessionID
toByteString,
-- | Converts SessionID to ByteString
)
where
import Data.ByteString (ByteString)
import Data.Typeable (Typeable)
import Data.UUID (UUID, toASCIIBytes, toString)
import Data.UUID.V4 (nextRandom)
newtype SessionID = SessionID {toUUID :: UUID}
deriving (Eq, Ord, Typeable)
instance Show SessionID where
show = toString . toUUID
mkSessionID :: IO SessionID
mkSessionID = SessionID `fmap` nextRandom
toByteString :: SessionID -> ByteString
toByteString = toASCIIBytes . toUUID