github-tools-0.1.2: src/GitHub/Types/Events/DeleteEvent.hs
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
module GitHub.Types.Events.DeleteEvent 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 DeleteEvent = DeleteEvent
{ deleteEventInstallation :: Maybe Installation
, deleteEventOrganization :: Organization
, deleteEventRepository :: Repository
, deleteEventSender :: User
, deleteEventPusherType :: Text
, deleteEventRef :: Text
, deleteEventRefType :: Text
} deriving (Eq, Show, Read)
instance Event DeleteEvent where
typeName = TypeName "DeleteEvent"
eventName = EventName "delete"
instance FromJSON DeleteEvent where
parseJSON (Object x) = DeleteEvent
<$> x .:? "installation"
<*> x .: "organization"
<*> x .: "repository"
<*> x .: "sender"
<*> x .: "pusher_type"
<*> x .: "ref"
<*> x .: "ref_type"
parseJSON _ = fail "DeleteEvent"
instance ToJSON DeleteEvent where
toJSON DeleteEvent{..} = object
[ "installation" .= deleteEventInstallation
, "organization" .= deleteEventOrganization
, "repository" .= deleteEventRepository
, "sender" .= deleteEventSender
, "pusher_type" .= deleteEventPusherType
, "ref" .= deleteEventRef
, "ref_type" .= deleteEventRefType
]
instance Arbitrary DeleteEvent where
arbitrary = DeleteEvent
<$> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary