github-tools-0.1.2: src/GitHub/Types/Events/OrganizationEvent.hs
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
module GitHub.Types.Events.OrganizationEvent 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 OrganizationEvent = OrganizationEvent
{ organizationEventInstallation :: Maybe Installation
, organizationEventOrganization :: Organization
, organizationEventSender :: User
, organizationEventAction :: Text
, organizationEventInvitation :: Maybe Invitation
, organizationEventMembership :: Maybe Membership
, organizationEventUser :: Maybe User
} deriving (Eq, Show, Read)
instance Event OrganizationEvent where
typeName = TypeName "OrganizationEvent"
eventName = EventName "organization"
instance FromJSON OrganizationEvent where
parseJSON (Object x) = OrganizationEvent
<$> x .:? "installation"
<*> x .: "organization"
<*> x .: "sender"
<*> x .: "action"
<*> x .:? "invitation"
<*> x .:? "membership"
<*> x .:? "user"
parseJSON _ = fail "OrganizationEvent"
instance ToJSON OrganizationEvent where
toJSON OrganizationEvent{..} = object
[ "installation" .= organizationEventInstallation
, "organization" .= organizationEventOrganization
, "sender" .= organizationEventSender
, "action" .= organizationEventAction
, "invitation" .= organizationEventInvitation
, "membership" .= organizationEventMembership
, "user" .= organizationEventUser
]
instance Arbitrary OrganizationEvent where
arbitrary = OrganizationEvent
<$> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary