module Web.Postie.SessionID ( SessionID -- | Unique session identifier , mkSessionID -- | Creates a SessionID , toByteString -- | Converts SessionID to ByteString ) where import Data.UUID (UUID, toString, toASCIIBytes) import Data.UUID.V4 (nextRandom) import Data.ByteString (ByteString) import Data.Typeable (Typeable) 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