packages feed

stratosphere-0.38.0: library-gen/Stratosphere/Resources/PinpointEmailConfigurationSet.hs

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

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpointemail-configurationset.html

module Stratosphere.Resources.PinpointEmailConfigurationSet where

import Stratosphere.ResourceImports
import Stratosphere.ResourceProperties.PinpointEmailConfigurationSetDeliveryOptions
import Stratosphere.ResourceProperties.PinpointEmailConfigurationSetReputationOptions
import Stratosphere.ResourceProperties.PinpointEmailConfigurationSetSendingOptions
import Stratosphere.ResourceProperties.PinpointEmailConfigurationSetTags
import Stratosphere.ResourceProperties.PinpointEmailConfigurationSetTrackingOptions

-- | Full data type definition for PinpointEmailConfigurationSet. See
-- 'pinpointEmailConfigurationSet' for a more convenient constructor.
data PinpointEmailConfigurationSet =
  PinpointEmailConfigurationSet
  { _pinpointEmailConfigurationSetDeliveryOptions :: Maybe PinpointEmailConfigurationSetDeliveryOptions
  , _pinpointEmailConfigurationSetName :: Val Text
  , _pinpointEmailConfigurationSetReputationOptions :: Maybe PinpointEmailConfigurationSetReputationOptions
  , _pinpointEmailConfigurationSetSendingOptions :: Maybe PinpointEmailConfigurationSetSendingOptions
  , _pinpointEmailConfigurationSetTags :: Maybe [PinpointEmailConfigurationSetTags]
  , _pinpointEmailConfigurationSetTrackingOptions :: Maybe PinpointEmailConfigurationSetTrackingOptions
  } deriving (Show, Eq)

instance ToResourceProperties PinpointEmailConfigurationSet where
  toResourceProperties PinpointEmailConfigurationSet{..} =
    ResourceProperties
    { resourcePropertiesType = "AWS::PinpointEmail::ConfigurationSet"
    , resourcePropertiesProperties =
        hashMapFromList $ catMaybes
        [ fmap (("DeliveryOptions",) . toJSON) _pinpointEmailConfigurationSetDeliveryOptions
        , (Just . ("Name",) . toJSON) _pinpointEmailConfigurationSetName
        , fmap (("ReputationOptions",) . toJSON) _pinpointEmailConfigurationSetReputationOptions
        , fmap (("SendingOptions",) . toJSON) _pinpointEmailConfigurationSetSendingOptions
        , fmap (("Tags",) . toJSON) _pinpointEmailConfigurationSetTags
        , fmap (("TrackingOptions",) . toJSON) _pinpointEmailConfigurationSetTrackingOptions
        ]
    }

-- | Constructor for 'PinpointEmailConfigurationSet' containing required
-- fields as arguments.
pinpointEmailConfigurationSet
  :: Val Text -- ^ 'pecsName'
  -> PinpointEmailConfigurationSet
pinpointEmailConfigurationSet namearg =
  PinpointEmailConfigurationSet
  { _pinpointEmailConfigurationSetDeliveryOptions = Nothing
  , _pinpointEmailConfigurationSetName = namearg
  , _pinpointEmailConfigurationSetReputationOptions = Nothing
  , _pinpointEmailConfigurationSetSendingOptions = Nothing
  , _pinpointEmailConfigurationSetTags = Nothing
  , _pinpointEmailConfigurationSetTrackingOptions = Nothing
  }

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpointemail-configurationset.html#cfn-pinpointemail-configurationset-deliveryoptions
pecsDeliveryOptions :: Lens' PinpointEmailConfigurationSet (Maybe PinpointEmailConfigurationSetDeliveryOptions)
pecsDeliveryOptions = lens _pinpointEmailConfigurationSetDeliveryOptions (\s a -> s { _pinpointEmailConfigurationSetDeliveryOptions = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpointemail-configurationset.html#cfn-pinpointemail-configurationset-name
pecsName :: Lens' PinpointEmailConfigurationSet (Val Text)
pecsName = lens _pinpointEmailConfigurationSetName (\s a -> s { _pinpointEmailConfigurationSetName = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpointemail-configurationset.html#cfn-pinpointemail-configurationset-reputationoptions
pecsReputationOptions :: Lens' PinpointEmailConfigurationSet (Maybe PinpointEmailConfigurationSetReputationOptions)
pecsReputationOptions = lens _pinpointEmailConfigurationSetReputationOptions (\s a -> s { _pinpointEmailConfigurationSetReputationOptions = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpointemail-configurationset.html#cfn-pinpointemail-configurationset-sendingoptions
pecsSendingOptions :: Lens' PinpointEmailConfigurationSet (Maybe PinpointEmailConfigurationSetSendingOptions)
pecsSendingOptions = lens _pinpointEmailConfigurationSetSendingOptions (\s a -> s { _pinpointEmailConfigurationSetSendingOptions = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpointemail-configurationset.html#cfn-pinpointemail-configurationset-tags
pecsTags :: Lens' PinpointEmailConfigurationSet (Maybe [PinpointEmailConfigurationSetTags])
pecsTags = lens _pinpointEmailConfigurationSetTags (\s a -> s { _pinpointEmailConfigurationSetTags = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpointemail-configurationset.html#cfn-pinpointemail-configurationset-trackingoptions
pecsTrackingOptions :: Lens' PinpointEmailConfigurationSet (Maybe PinpointEmailConfigurationSetTrackingOptions)
pecsTrackingOptions = lens _pinpointEmailConfigurationSetTrackingOptions (\s a -> s { _pinpointEmailConfigurationSetTrackingOptions = a })