github-tools-0.1.2: src/GitHub/Types/Events/StarEvent.hs
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
module GitHub.Types.Events.StarEvent 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 StarEvent = StarEvent
{ starEventInstallation :: Maybe Installation
, starEventOrganization :: Organization
, starEventRepository :: Repository
, starEventSender :: User
, starEventAction :: Text
, starEventStarredAt :: Text
} deriving (Eq, Show, Read)
instance Event StarEvent where
typeName = TypeName "StarEvent"
eventName = EventName "star"
instance FromJSON StarEvent where
parseJSON (Object x) = StarEvent
<$> x .:? "installation"
<*> x .: "organization"
<*> x .: "repository"
<*> x .: "sender"
<*> x .: "action"
<*> x .: "starred_at"
parseJSON _ = fail "StarEvent"
instance ToJSON StarEvent where
toJSON StarEvent{..} = object
[ "installation" .= starEventInstallation
, "organization" .= starEventOrganization
, "repository" .= starEventRepository
, "sender" .= starEventSender
, "action" .= starEventAction
, "starred_at" .= starEventStarredAt
]
instance Arbitrary StarEvent where
arbitrary = StarEvent
<$> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary