github-tools-0.1.2: src/GitHub/Types/Events/CreateEvent.hs
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
module GitHub.Types.Events.CreateEvent 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 CreateEvent = CreateEvent
{ createEventInstallation :: Maybe Installation
, createEventOrganization :: Organization
, createEventRepository :: Repository
, createEventSender :: User
, createEventDescription :: Text
, createEventMasterBranch :: Text
, createEventPusherType :: Text
, createEventRef :: Text
, createEventRefType :: Text
} deriving (Eq, Show, Read)
instance Event CreateEvent where
typeName = TypeName "CreateEvent"
eventName = EventName "create"
instance FromJSON CreateEvent where
parseJSON (Object x) = CreateEvent
<$> x .:? "installation"
<*> x .: "organization"
<*> x .: "repository"
<*> x .: "sender"
<*> x .: "description"
<*> x .: "master_branch"
<*> x .: "pusher_type"
<*> x .: "ref"
<*> x .: "ref_type"
parseJSON _ = fail "CreateEvent"
instance ToJSON CreateEvent where
toJSON CreateEvent{..} = object
[ "installation" .= createEventInstallation
, "organization" .= createEventOrganization
, "repository" .= createEventRepository
, "sender" .= createEventSender
, "description" .= createEventDescription
, "master_branch" .= createEventMasterBranch
, "pusher_type" .= createEventPusherType
, "ref" .= createEventRef
, "ref_type" .= createEventRefType
]
instance Arbitrary CreateEvent where
arbitrary = CreateEvent
<$> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary