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

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-securityconfiguration-cloudwatchencryption.html

module Stratosphere.ResourceProperties.GlueSecurityConfigurationCloudWatchEncryption where

import Stratosphere.ResourceImports


-- | Full data type definition for
-- GlueSecurityConfigurationCloudWatchEncryption. See
-- 'glueSecurityConfigurationCloudWatchEncryption' for a more convenient
-- constructor.
data GlueSecurityConfigurationCloudWatchEncryption =
  GlueSecurityConfigurationCloudWatchEncryption
  { _glueSecurityConfigurationCloudWatchEncryptionCloudWatchEncryptionMode :: Maybe (Val Text)
  , _glueSecurityConfigurationCloudWatchEncryptionKmsKeyArn :: Maybe (Val Text)
  } deriving (Show, Eq)

instance ToJSON GlueSecurityConfigurationCloudWatchEncryption where
  toJSON GlueSecurityConfigurationCloudWatchEncryption{..} =
    object $
    catMaybes
    [ fmap (("CloudWatchEncryptionMode",) . toJSON) _glueSecurityConfigurationCloudWatchEncryptionCloudWatchEncryptionMode
    , fmap (("KmsKeyArn",) . toJSON) _glueSecurityConfigurationCloudWatchEncryptionKmsKeyArn
    ]

-- | Constructor for 'GlueSecurityConfigurationCloudWatchEncryption'
-- containing required fields as arguments.
glueSecurityConfigurationCloudWatchEncryption
  :: GlueSecurityConfigurationCloudWatchEncryption
glueSecurityConfigurationCloudWatchEncryption  =
  GlueSecurityConfigurationCloudWatchEncryption
  { _glueSecurityConfigurationCloudWatchEncryptionCloudWatchEncryptionMode = Nothing
  , _glueSecurityConfigurationCloudWatchEncryptionKmsKeyArn = Nothing
  }

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-securityconfiguration-cloudwatchencryption.html#cfn-glue-securityconfiguration-cloudwatchencryption-cloudwatchencryptionmode
gsccweCloudWatchEncryptionMode :: Lens' GlueSecurityConfigurationCloudWatchEncryption (Maybe (Val Text))
gsccweCloudWatchEncryptionMode = lens _glueSecurityConfigurationCloudWatchEncryptionCloudWatchEncryptionMode (\s a -> s { _glueSecurityConfigurationCloudWatchEncryptionCloudWatchEncryptionMode = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-securityconfiguration-cloudwatchencryption.html#cfn-glue-securityconfiguration-cloudwatchencryption-kmskeyarn
gsccweKmsKeyArn :: Lens' GlueSecurityConfigurationCloudWatchEncryption (Maybe (Val Text))
gsccweKmsKeyArn = lens _glueSecurityConfigurationCloudWatchEncryptionKmsKeyArn (\s a -> s { _glueSecurityConfigurationCloudWatchEncryptionKmsKeyArn = a })