github-tools-0.1.2: src/GitHub/Types/Events/MemberEvent.hs
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
module GitHub.Types.Events.MemberEvent where
import Data.Aeson (FromJSON (..), ToJSON (..), object)
import Data.Aeson.Types (Value (..), (.:), (.:?), (.=))
import Data.Text (Text)
import Test.QuickCheck.Arbitrary (Arbitrary (..))
import GitHub.Types.Base
import GitHub.Types.Event
data MemberEvent = MemberEvent
{ memberEventInstallation :: Maybe Installation
, memberEventOrganization :: Organization
, memberEventRepository :: Repository
, memberEventSender :: User
, memberEventAction :: Text
} deriving (Eq, Show, Read)
instance Event MemberEvent where
typeName = TypeName "MemberEvent"
eventName = EventName "member"
instance FromJSON MemberEvent where
parseJSON (Object x) = MemberEvent
<$> x .:? "installation"
<*> x .: "organization"
<*> x .: "repository"
<*> x .: "sender"
<*> x .: "action"
parseJSON _ = fail "MemberEvent"
instance ToJSON MemberEvent where
toJSON MemberEvent{..} = object
[ "installation" .= memberEventInstallation
, "organization" .= memberEventOrganization
, "repository" .= memberEventRepository
, "sender" .= memberEventSender
, "action" .= memberEventAction
]
instance Arbitrary MemberEvent where
arbitrary = MemberEvent
<$> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary