{-# LANGUAGE DeriveDataTypeable , DeriveGeneric #-} module Type.User where import Data.Aeson import Data.JSON.Schema import Data.Text (Text) import Data.Typeable import GHC.Generics import Generics.Generic.Aeson import Generics.XmlPickler import Text.XML.HXT.Arrow.Pickle type Name = Text type Password = Text data User = User { name :: Name , password :: Password } deriving (Eq, Generic, Ord, Show, Typeable) instance XmlPickler User where xpickle = gxpickle instance JSONSchema User where schema = gSchema instance FromJSON User where parseJSON = gparseJson instance ToJSON User where toJSON = gtoJson -- We might want to skip the ToJSON instance so we don't accidentally -- serve passwords, but this type is accepted on signup which means a -- haskell client needs to be able to serialize it.