stratosphere-0.28.0: library-gen/Stratosphere/ResourceProperties/S3BucketPublicAccessBlockConfiguration.hs
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE TupleSections #-}
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-publicaccessblockconfiguration.html
module Stratosphere.ResourceProperties.S3BucketPublicAccessBlockConfiguration where
import Stratosphere.ResourceImports
-- | Full data type definition for S3BucketPublicAccessBlockConfiguration. See
-- 's3BucketPublicAccessBlockConfiguration' for a more convenient
-- constructor.
data S3BucketPublicAccessBlockConfiguration =
S3BucketPublicAccessBlockConfiguration
{ _s3BucketPublicAccessBlockConfigurationBlockPublicAcls :: Maybe (Val Bool)
, _s3BucketPublicAccessBlockConfigurationBlockPublicPolicy :: Maybe (Val Bool)
, _s3BucketPublicAccessBlockConfigurationIgnorePublicAcls :: Maybe (Val Bool)
, _s3BucketPublicAccessBlockConfigurationRestrictPublicBuckets :: Maybe (Val Bool)
} deriving (Show, Eq)
instance ToJSON S3BucketPublicAccessBlockConfiguration where
toJSON S3BucketPublicAccessBlockConfiguration{..} =
object $
catMaybes
[ fmap (("BlockPublicAcls",) . toJSON . fmap Bool') _s3BucketPublicAccessBlockConfigurationBlockPublicAcls
, fmap (("BlockPublicPolicy",) . toJSON . fmap Bool') _s3BucketPublicAccessBlockConfigurationBlockPublicPolicy
, fmap (("IgnorePublicAcls",) . toJSON . fmap Bool') _s3BucketPublicAccessBlockConfigurationIgnorePublicAcls
, fmap (("RestrictPublicBuckets",) . toJSON . fmap Bool') _s3BucketPublicAccessBlockConfigurationRestrictPublicBuckets
]
instance FromJSON S3BucketPublicAccessBlockConfiguration where
parseJSON (Object obj) =
S3BucketPublicAccessBlockConfiguration <$>
fmap (fmap (fmap unBool')) (obj .:? "BlockPublicAcls") <*>
fmap (fmap (fmap unBool')) (obj .:? "BlockPublicPolicy") <*>
fmap (fmap (fmap unBool')) (obj .:? "IgnorePublicAcls") <*>
fmap (fmap (fmap unBool')) (obj .:? "RestrictPublicBuckets")
parseJSON _ = mempty
-- | Constructor for 'S3BucketPublicAccessBlockConfiguration' containing
-- required fields as arguments.
s3BucketPublicAccessBlockConfiguration
:: S3BucketPublicAccessBlockConfiguration
s3BucketPublicAccessBlockConfiguration =
S3BucketPublicAccessBlockConfiguration
{ _s3BucketPublicAccessBlockConfigurationBlockPublicAcls = Nothing
, _s3BucketPublicAccessBlockConfigurationBlockPublicPolicy = Nothing
, _s3BucketPublicAccessBlockConfigurationIgnorePublicAcls = Nothing
, _s3BucketPublicAccessBlockConfigurationRestrictPublicBuckets = Nothing
}
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-publicaccessblockconfiguration.html#cfn-s3-bucket-publicaccessblockconfiguration-blockpublicacls
sbpabcBlockPublicAcls :: Lens' S3BucketPublicAccessBlockConfiguration (Maybe (Val Bool))
sbpabcBlockPublicAcls = lens _s3BucketPublicAccessBlockConfigurationBlockPublicAcls (\s a -> s { _s3BucketPublicAccessBlockConfigurationBlockPublicAcls = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-publicaccessblockconfiguration.html#cfn-s3-bucket-publicaccessblockconfiguration-blockpublicpolicy
sbpabcBlockPublicPolicy :: Lens' S3BucketPublicAccessBlockConfiguration (Maybe (Val Bool))
sbpabcBlockPublicPolicy = lens _s3BucketPublicAccessBlockConfigurationBlockPublicPolicy (\s a -> s { _s3BucketPublicAccessBlockConfigurationBlockPublicPolicy = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-publicaccessblockconfiguration.html#cfn-s3-bucket-publicaccessblockconfiguration-ignorepublicacls
sbpabcIgnorePublicAcls :: Lens' S3BucketPublicAccessBlockConfiguration (Maybe (Val Bool))
sbpabcIgnorePublicAcls = lens _s3BucketPublicAccessBlockConfigurationIgnorePublicAcls (\s a -> s { _s3BucketPublicAccessBlockConfigurationIgnorePublicAcls = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-publicaccessblockconfiguration.html#cfn-s3-bucket-publicaccessblockconfiguration-restrictpublicbuckets
sbpabcRestrictPublicBuckets :: Lens' S3BucketPublicAccessBlockConfiguration (Maybe (Val Bool))
sbpabcRestrictPublicBuckets = lens _s3BucketPublicAccessBlockConfigurationRestrictPublicBuckets (\s a -> s { _s3BucketPublicAccessBlockConfigurationRestrictPublicBuckets = a })