github-tools-0.1.2: src/GitHub/Types/Base/CheckApp.hs
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
module GitHub.Types.Base.CheckApp 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.Permissions
import GitHub.Types.Base.User
------------------------------------------------------------------------------
-- CheckApp
data CheckApp = CheckApp
{ checkAppCreatedAt :: Text
, checkAppDescription :: Text
, checkAppEvents :: [Text]
, checkAppExternalUrl :: Text
, checkAppHtmlUrl :: Text
, checkAppId :: Int
, checkAppName :: Text
, checkAppNodeId :: Text
, checkAppOwner :: User
, checkAppPermissions :: Permissions
, checkAppSlug :: Text
, checkAppUpdatedAt :: Text
} deriving (Eq, Show, Read)
instance FromJSON CheckApp where
parseJSON (Object x) = CheckApp
<$> x .: "created_at"
<*> x .: "description"
<*> x .: "events"
<*> x .: "external_url"
<*> x .: "html_url"
<*> x .: "id"
<*> x .: "name"
<*> x .: "node_id"
<*> x .: "owner"
<*> x .: "permissions"
<*> x .: "slug"
<*> x .: "updated_at"
parseJSON _ = fail "CheckApp"
instance ToJSON CheckApp where
toJSON CheckApp{..} = object
[ "created_at" .= checkAppCreatedAt
, "description" .= checkAppDescription
, "events" .= checkAppEvents
, "external_url" .= checkAppExternalUrl
, "html_url" .= checkAppHtmlUrl
, "id" .= checkAppId
, "name" .= checkAppName
, "node_id" .= checkAppNodeId
, "owner" .= checkAppOwner
, "permissions" .= checkAppPermissions
, "slug" .= checkAppSlug
, "updated_at" .= checkAppUpdatedAt
]
instance Arbitrary CheckApp where
arbitrary = CheckApp
<$> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary