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