github-tools-0.1.2: src/GitHub/Types/Base/Deployment.hs
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
module GitHub.Types.Base.Deployment 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.DateTime
import GitHub.Types.Base.DeploymentPayload
import GitHub.Types.Base.User
------------------------------------------------------------------------------
-- Deployment
data Deployment = Deployment
{ deploymentUrl :: Text
, deploymentId :: Int
, deploymentNodeId :: Text
, deploymentSha :: Text
, deploymentRef :: Text
, deploymentTask :: Text
, deploymentPayload :: Maybe DeploymentPayload
, deploymentEnvironment :: Text
, deploymentOriginalEnvironment :: Text
, deploymentProductionEnvironment :: Bool
, deploymentTransientEnvironment :: Bool
, deploymentDescription :: Maybe Text
, deploymentCreator :: User
, deploymentCreatedAt :: DateTime
, deploymentUpdatedAt :: DateTime
, deploymentStatusesUrl :: Text
, deploymentRepositoryUrl :: Text
} deriving (Eq, Show, Read)
instance FromJSON Deployment where
parseJSON (Object x) = Deployment
<$> x .: "url"
<*> x .: "id"
<*> x .: "node_id"
<*> x .: "sha"
<*> x .: "ref"
<*> x .: "task"
<*> x .: "payload"
<*> x .: "environment"
<*> x .: "original_environment"
<*> x .: "production_environment"
<*> x .: "transient_environment"
<*> x .: "description"
<*> x .: "creator"
<*> x .: "created_at"
<*> x .: "updated_at"
<*> x .: "statuses_url"
<*> x .: "repository_url"
parseJSON _ = fail "Deployment"
instance ToJSON Deployment where
toJSON Deployment{..} = object
[ "url" .= deploymentUrl
, "id" .= deploymentId
, "node_id" .= deploymentNodeId
, "sha" .= deploymentSha
, "ref" .= deploymentRef
, "task" .= deploymentTask
, "payload" .= deploymentPayload
, "environment" .= deploymentEnvironment
, "original_environment" .= deploymentOriginalEnvironment
, "production_environment" .= deploymentProductionEnvironment
, "transient_environment" .= deploymentTransientEnvironment
, "description" .= deploymentDescription
, "creator" .= deploymentCreator
, "created_at" .= deploymentCreatedAt
, "updated_at" .= deploymentUpdatedAt
, "statuses_url" .= deploymentStatusesUrl
, "repository_url" .= deploymentRepositoryUrl
]
instance Arbitrary Deployment where
arbitrary = Deployment
<$> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary