github-tools-0.1.2: src/GitHub/Types/Base/UserStamp.hs
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
module GitHub.Types.Base.UserStamp where
import Data.Aeson (FromJSON (..), ToJSON (..), object)
import Data.Aeson.Types (Value (..), (.:), (.=))
import Data.Text (Text)
import Data.Text.Arbitrary ()
import Test.QuickCheck.Arbitrary (Arbitrary (..))
------------------------------------------------------------------------------
-- UserStamp
data UserStamp = UserStamp
{ userStampName :: Text
, userStampEmail :: Text
, userStampDate :: Text
} deriving (Eq, Show, Read)
instance FromJSON UserStamp where
parseJSON (Object x) = UserStamp
<$> x .: "name"
<*> x .: "email"
<*> x .: "date"
parseJSON _ = fail "UserStamp"
instance ToJSON UserStamp where
toJSON UserStamp{..} = object
[ "name" .= userStampName
, "email" .= userStampEmail
, "date" .= userStampDate
]
instance Arbitrary UserStamp where
arbitrary = UserStamp
<$> arbitrary
<*> arbitrary
<*> arbitrary