packages feed

stratosphere-0.26.0: library-gen/Stratosphere/ResourceProperties/ApiGatewayDeploymentCanarySetting.hs

{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE TupleSections #-}

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-canarysetting.html

module Stratosphere.ResourceProperties.ApiGatewayDeploymentCanarySetting where

import Stratosphere.ResourceImports


-- | Full data type definition for ApiGatewayDeploymentCanarySetting. See
-- 'apiGatewayDeploymentCanarySetting' for a more convenient constructor.
data ApiGatewayDeploymentCanarySetting =
  ApiGatewayDeploymentCanarySetting
  { _apiGatewayDeploymentCanarySettingPercentTraffic :: Maybe (Val Double)
  , _apiGatewayDeploymentCanarySettingStageVariableOverrides :: Maybe Object
  , _apiGatewayDeploymentCanarySettingUseStageCache :: Maybe (Val Bool)
  } deriving (Show, Eq)

instance ToJSON ApiGatewayDeploymentCanarySetting where
  toJSON ApiGatewayDeploymentCanarySetting{..} =
    object $
    catMaybes
    [ fmap (("PercentTraffic",) . toJSON . fmap Double') _apiGatewayDeploymentCanarySettingPercentTraffic
    , fmap (("StageVariableOverrides",) . toJSON) _apiGatewayDeploymentCanarySettingStageVariableOverrides
    , fmap (("UseStageCache",) . toJSON . fmap Bool') _apiGatewayDeploymentCanarySettingUseStageCache
    ]

instance FromJSON ApiGatewayDeploymentCanarySetting where
  parseJSON (Object obj) =
    ApiGatewayDeploymentCanarySetting <$>
      fmap (fmap (fmap unDouble')) (obj .:? "PercentTraffic") <*>
      (obj .:? "StageVariableOverrides") <*>
      fmap (fmap (fmap unBool')) (obj .:? "UseStageCache")
  parseJSON _ = mempty

-- | Constructor for 'ApiGatewayDeploymentCanarySetting' containing required
-- fields as arguments.
apiGatewayDeploymentCanarySetting
  :: ApiGatewayDeploymentCanarySetting
apiGatewayDeploymentCanarySetting  =
  ApiGatewayDeploymentCanarySetting
  { _apiGatewayDeploymentCanarySettingPercentTraffic = Nothing
  , _apiGatewayDeploymentCanarySettingStageVariableOverrides = Nothing
  , _apiGatewayDeploymentCanarySettingUseStageCache = Nothing
  }

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-canarysetting.html#cfn-apigateway-deployment-canarysetting-percenttraffic
agdcsPercentTraffic :: Lens' ApiGatewayDeploymentCanarySetting (Maybe (Val Double))
agdcsPercentTraffic = lens _apiGatewayDeploymentCanarySettingPercentTraffic (\s a -> s { _apiGatewayDeploymentCanarySettingPercentTraffic = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-canarysetting.html#cfn-apigateway-deployment-canarysetting-stagevariableoverrides
agdcsStageVariableOverrides :: Lens' ApiGatewayDeploymentCanarySetting (Maybe Object)
agdcsStageVariableOverrides = lens _apiGatewayDeploymentCanarySettingStageVariableOverrides (\s a -> s { _apiGatewayDeploymentCanarySettingStageVariableOverrides = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-canarysetting.html#cfn-apigateway-deployment-canarysetting-usestagecache
agdcsUseStageCache :: Lens' ApiGatewayDeploymentCanarySetting (Maybe (Val Bool))
agdcsUseStageCache = lens _apiGatewayDeploymentCanarySettingUseStageCache (\s a -> s { _apiGatewayDeploymentCanarySettingUseStageCache = a })