github-tools-0.1.2: src/GitHub/Types/Events/PingEvent.hs
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
module GitHub.Types.Events.PingEvent 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 PingEvent = PingEvent
{ pingEventInstallation :: Maybe Installation
, pingEventOrganization :: Organization
, pingEventSender :: User
, pingEventHook :: Hook
, pingEventHookId :: Int
, pingEventZen :: Text
} deriving (Eq, Show, Read)
instance Event PingEvent where
typeName = TypeName "PingEvent"
eventName = EventName "ping"
instance FromJSON PingEvent where
parseJSON (Object x) = PingEvent
<$> x .:? "installation"
<*> x .: "organization"
<*> x .: "sender"
<*> x .: "hook"
<*> x .: "hook_id"
<*> x .: "zen"
parseJSON _ = fail "PingEvent"
instance ToJSON PingEvent where
toJSON PingEvent{..} = object
[ "installation" .= pingEventInstallation
, "organization" .= pingEventOrganization
, "sender" .= pingEventSender
, "hook" .= pingEventHook
, "hook_id" .= pingEventHookId
, "zen" .= pingEventZen
]
instance Arbitrary PingEvent where
arbitrary = PingEvent
<$> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary