stratosphere-0.1.5: library-gen/Stratosphere/ResourceProperties/S3NotificationConfiguration.hs
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE OverloadedStrings #-}
-- | Describes the notification configuration for an AWS::S3::Bucket resource.
module Stratosphere.ResourceProperties.S3NotificationConfiguration where
import Control.Lens
import Data.Aeson
import Data.Aeson.Types
import Data.Text
import GHC.Generics
import Stratosphere.Values
import Stratosphere.ResourceProperties.S3NotificationConfigurationLambdaConfiguration
import Stratosphere.ResourceProperties.S3NotificationConfigurationQueueConfiguration
import Stratosphere.ResourceProperties.S3NotificationConfigurationTopicConfiguration
-- | Full data type definition for S3NotificationConfiguration. See
-- 's3NotificationConfiguration' for a more convenient constructor.
data S3NotificationConfiguration =
S3NotificationConfiguration
{ _s3NotificationConfigurationLambdaConfigurations :: Maybe [S3NotificationConfigurationLambdaConfiguration]
, _s3NotificationConfigurationQueueConfigurations :: Maybe [S3NotificationConfigurationQueueConfiguration]
, _s3NotificationConfigurationTopicConfigurations :: Maybe [S3NotificationConfigurationTopicConfiguration]
} deriving (Show, Generic)
instance ToJSON S3NotificationConfiguration where
toJSON = genericToJSON defaultOptions { fieldLabelModifier = Prelude.drop 28, omitNothingFields = True }
instance FromJSON S3NotificationConfiguration where
parseJSON = genericParseJSON defaultOptions { fieldLabelModifier = Prelude.drop 28, omitNothingFields = True }
-- | Constructor for 'S3NotificationConfiguration' containing required fields
-- as arguments.
s3NotificationConfiguration
:: S3NotificationConfiguration
s3NotificationConfiguration =
S3NotificationConfiguration
{ _s3NotificationConfigurationLambdaConfigurations = Nothing
, _s3NotificationConfigurationQueueConfigurations = Nothing
, _s3NotificationConfigurationTopicConfigurations = Nothing
}
-- | The AWS Lambda functions to invoke and the events for which to invoke the
-- functions.
sncLambdaConfigurations :: Lens' S3NotificationConfiguration (Maybe [S3NotificationConfigurationLambdaConfiguration])
sncLambdaConfigurations = lens _s3NotificationConfigurationLambdaConfigurations (\s a -> s { _s3NotificationConfigurationLambdaConfigurations = a })
-- | The Amazon Simple Queue Service queues to publish messages to and the
-- events for which to publish messages.
sncQueueConfigurations :: Lens' S3NotificationConfiguration (Maybe [S3NotificationConfigurationQueueConfiguration])
sncQueueConfigurations = lens _s3NotificationConfigurationQueueConfigurations (\s a -> s { _s3NotificationConfigurationQueueConfigurations = a })
-- | The topic to which notifications are sent and the events for which
-- notification are generated.
sncTopicConfigurations :: Lens' S3NotificationConfiguration (Maybe [S3NotificationConfigurationTopicConfiguration])
sncTopicConfigurations = lens _s3NotificationConfigurationTopicConfigurations (\s a -> s { _s3NotificationConfigurationTopicConfigurations = a })