packages feed

stratosphere-0.60.0: library-gen/Stratosphere/Resources/AppConfigConfigurationProfile.hs

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

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-configurationprofile.html

module Stratosphere.Resources.AppConfigConfigurationProfile where

import Stratosphere.ResourceImports
import Stratosphere.ResourceProperties.AppConfigConfigurationProfileTags
import Stratosphere.ResourceProperties.AppConfigConfigurationProfileValidators

-- | Full data type definition for AppConfigConfigurationProfile. See
-- 'appConfigConfigurationProfile' for a more convenient constructor.
data AppConfigConfigurationProfile =
  AppConfigConfigurationProfile
  { _appConfigConfigurationProfileApplicationId :: Val Text
  , _appConfigConfigurationProfileDescription :: Maybe (Val Text)
  , _appConfigConfigurationProfileLocationUri :: Val Text
  , _appConfigConfigurationProfileName :: Val Text
  , _appConfigConfigurationProfileRetrievalRoleArn :: Maybe (Val Text)
  , _appConfigConfigurationProfileTags :: Maybe [AppConfigConfigurationProfileTags]
  , _appConfigConfigurationProfileValidators :: Maybe [AppConfigConfigurationProfileValidators]
  } deriving (Show, Eq)

instance ToResourceProperties AppConfigConfigurationProfile where
  toResourceProperties AppConfigConfigurationProfile{..} =
    ResourceProperties
    { resourcePropertiesType = "AWS::AppConfig::ConfigurationProfile"
    , resourcePropertiesProperties =
        keyMapFromList $ catMaybes
        [ (Just . ("ApplicationId",) . toJSON) _appConfigConfigurationProfileApplicationId
        , fmap (("Description",) . toJSON) _appConfigConfigurationProfileDescription
        , (Just . ("LocationUri",) . toJSON) _appConfigConfigurationProfileLocationUri
        , (Just . ("Name",) . toJSON) _appConfigConfigurationProfileName
        , fmap (("RetrievalRoleArn",) . toJSON) _appConfigConfigurationProfileRetrievalRoleArn
        , fmap (("Tags",) . toJSON) _appConfigConfigurationProfileTags
        , fmap (("Validators",) . toJSON) _appConfigConfigurationProfileValidators
        ]
    }

-- | Constructor for 'AppConfigConfigurationProfile' containing required
-- fields as arguments.
appConfigConfigurationProfile
  :: Val Text -- ^ 'accpApplicationId'
  -> Val Text -- ^ 'accpLocationUri'
  -> Val Text -- ^ 'accpName'
  -> AppConfigConfigurationProfile
appConfigConfigurationProfile applicationIdarg locationUriarg namearg =
  AppConfigConfigurationProfile
  { _appConfigConfigurationProfileApplicationId = applicationIdarg
  , _appConfigConfigurationProfileDescription = Nothing
  , _appConfigConfigurationProfileLocationUri = locationUriarg
  , _appConfigConfigurationProfileName = namearg
  , _appConfigConfigurationProfileRetrievalRoleArn = Nothing
  , _appConfigConfigurationProfileTags = Nothing
  , _appConfigConfigurationProfileValidators = Nothing
  }

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-configurationprofile.html#cfn-appconfig-configurationprofile-applicationid
accpApplicationId :: Lens' AppConfigConfigurationProfile (Val Text)
accpApplicationId = lens _appConfigConfigurationProfileApplicationId (\s a -> s { _appConfigConfigurationProfileApplicationId = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-configurationprofile.html#cfn-appconfig-configurationprofile-description
accpDescription :: Lens' AppConfigConfigurationProfile (Maybe (Val Text))
accpDescription = lens _appConfigConfigurationProfileDescription (\s a -> s { _appConfigConfigurationProfileDescription = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-configurationprofile.html#cfn-appconfig-configurationprofile-locationuri
accpLocationUri :: Lens' AppConfigConfigurationProfile (Val Text)
accpLocationUri = lens _appConfigConfigurationProfileLocationUri (\s a -> s { _appConfigConfigurationProfileLocationUri = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-configurationprofile.html#cfn-appconfig-configurationprofile-name
accpName :: Lens' AppConfigConfigurationProfile (Val Text)
accpName = lens _appConfigConfigurationProfileName (\s a -> s { _appConfigConfigurationProfileName = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-configurationprofile.html#cfn-appconfig-configurationprofile-retrievalrolearn
accpRetrievalRoleArn :: Lens' AppConfigConfigurationProfile (Maybe (Val Text))
accpRetrievalRoleArn = lens _appConfigConfigurationProfileRetrievalRoleArn (\s a -> s { _appConfigConfigurationProfileRetrievalRoleArn = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-configurationprofile.html#cfn-appconfig-configurationprofile-tags
accpTags :: Lens' AppConfigConfigurationProfile (Maybe [AppConfigConfigurationProfileTags])
accpTags = lens _appConfigConfigurationProfileTags (\s a -> s { _appConfigConfigurationProfileTags = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-configurationprofile.html#cfn-appconfig-configurationprofile-validators
accpValidators :: Lens' AppConfigConfigurationProfile (Maybe [AppConfigConfigurationProfileValidators])
accpValidators = lens _appConfigConfigurationProfileValidators (\s a -> s { _appConfigConfigurationProfileValidators = a })