github-tools-0.1.2: src/GitHub/Types/Base/UserRef.hs
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
module GitHub.Types.Base.UserRef 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 (..))
------------------------------------------------------------------------------
-- UserRef
data UserRef = UserRef
{ userRefName :: Text
, userRefEmail :: Maybe Text
} deriving (Eq, Show, Read)
instance FromJSON UserRef where
parseJSON (Object x) = UserRef
<$> x .: "name"
<*> x .: "email"
parseJSON _ = fail "UserRef"
instance ToJSON UserRef where
toJSON UserRef{..} = object
[ "name" .= userRefName
, "email" .= userRefEmail
]
instance Arbitrary UserRef where
arbitrary = UserRef
<$> arbitrary
<*> arbitrary