github-tools-0.1.2: src/GitHub/Types/Base/CheckSuite.hs
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
module GitHub.Types.Base.CheckSuite 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.CheckApp
import GitHub.Types.Base.CheckCommit
import GitHub.Types.Base.CheckPullRequest
------------------------------------------------------------------------------
-- CheckSuite
data CheckSuite = CheckSuite
{ checkSuiteAfter :: Maybe Text
, checkSuiteApp :: CheckApp
, checkSuiteBefore :: Maybe Text
, checkSuiteCheckRunsUrl :: Maybe Text
, checkSuiteConclusion :: Maybe Text
, checkSuiteHeadBranch :: Maybe Text
, checkSuiteHeadCommit :: Maybe CheckCommit
, checkSuiteHeadSha :: Text
, checkSuiteId :: Int
, checkSuiteLatestCheckRunsCount :: Maybe Int
, checkSuiteNodeId :: Text
, checkSuitePullRequests :: [CheckPullRequest]
, checkSuiteRerequestable :: Maybe Bool
, checkSuiteRunsRerequestable :: Maybe Bool
, checkSuiteStatus :: Text
, checkSuiteUrl :: Text
, checkSuiteUpdatedAt :: Text
, checkSuiteCreatedAt :: Text
} deriving (Eq, Show, Read)
instance FromJSON CheckSuite where
parseJSON (Object x) = CheckSuite
<$> x .: "after"
<*> x .: "app"
<*> x .: "before"
<*> x .:? "check_runs_url"
<*> x .: "conclusion"
<*> x .: "head_branch"
<*> x .:? "head_commit"
<*> x .: "head_sha"
<*> x .: "id"
<*> x .:? "latest_check_runs_count"
<*> x .: "node_id"
<*> x .: "pull_requests"
<*> x .:? "rerequestable"
<*> x .:? "runs_rerequestable"
<*> x .: "status"
<*> x .: "url"
<*> x .: "updated_at"
<*> x .: "created_at"
parseJSON _ = fail "CheckSuite"
instance ToJSON CheckSuite where
toJSON CheckSuite{..} = object
[ "after" .= checkSuiteAfter
, "app" .= checkSuiteApp
, "before" .= checkSuiteBefore
, "check_runs_url" .= checkSuiteCheckRunsUrl
, "conclusion" .= checkSuiteConclusion
, "head_branch" .= checkSuiteHeadBranch
, "head_commit" .= checkSuiteHeadCommit
, "head_sha" .= checkSuiteHeadSha
, "id" .= checkSuiteId
, "latest_check_runs_count" .= checkSuiteLatestCheckRunsCount
, "node_id" .= checkSuiteNodeId
, "pull_requests" .= checkSuitePullRequests
, "rerequestable" .= checkSuiteRerequestable
, "runs_rerequestable" .= checkSuiteRunsRerequestable
, "status" .= checkSuiteStatus
, "url" .= checkSuiteUrl
, "updated_at" .= checkSuiteUpdatedAt
, "created_at" .= checkSuiteCreatedAt
]
instance Arbitrary CheckSuite where
arbitrary = CheckSuite
<$> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary