packages feed

stratosphere-0.43.0: library-gen/Stratosphere/Resources/PinpointCampaign.hs

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

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-campaign.html

module Stratosphere.Resources.PinpointCampaign where

import Stratosphere.ResourceImports
import Stratosphere.ResourceProperties.PinpointCampaignWriteTreatmentResource
import Stratosphere.ResourceProperties.PinpointCampaignCampaignHook
import Stratosphere.ResourceProperties.PinpointCampaignLimits
import Stratosphere.ResourceProperties.PinpointCampaignMessageConfiguration
import Stratosphere.ResourceProperties.PinpointCampaignSchedule

-- | Full data type definition for PinpointCampaign. See 'pinpointCampaign'
-- for a more convenient constructor.
data PinpointCampaign =
  PinpointCampaign
  { _pinpointCampaignAdditionalTreatments :: Maybe [PinpointCampaignWriteTreatmentResource]
  , _pinpointCampaignApplicationId :: Val Text
  , _pinpointCampaignCampaignHook :: Maybe PinpointCampaignCampaignHook
  , _pinpointCampaignDescription :: Maybe (Val Text)
  , _pinpointCampaignHoldoutPercent :: Maybe (Val Integer)
  , _pinpointCampaignIsPaused :: Maybe (Val Bool)
  , _pinpointCampaignLimits :: Maybe PinpointCampaignLimits
  , _pinpointCampaignMessageConfiguration :: PinpointCampaignMessageConfiguration
  , _pinpointCampaignName :: Val Text
  , _pinpointCampaignSchedule :: PinpointCampaignSchedule
  , _pinpointCampaignSegmentId :: Val Text
  , _pinpointCampaignSegmentVersion :: Maybe (Val Integer)
  , _pinpointCampaignTags :: Maybe Object
  , _pinpointCampaignTreatmentDescription :: Maybe (Val Text)
  , _pinpointCampaignTreatmentName :: Maybe (Val Text)
  } deriving (Show, Eq)

instance ToResourceProperties PinpointCampaign where
  toResourceProperties PinpointCampaign{..} =
    ResourceProperties
    { resourcePropertiesType = "AWS::Pinpoint::Campaign"
    , resourcePropertiesProperties =
        hashMapFromList $ catMaybes
        [ fmap (("AdditionalTreatments",) . toJSON) _pinpointCampaignAdditionalTreatments
        , (Just . ("ApplicationId",) . toJSON) _pinpointCampaignApplicationId
        , fmap (("CampaignHook",) . toJSON) _pinpointCampaignCampaignHook
        , fmap (("Description",) . toJSON) _pinpointCampaignDescription
        , fmap (("HoldoutPercent",) . toJSON) _pinpointCampaignHoldoutPercent
        , fmap (("IsPaused",) . toJSON) _pinpointCampaignIsPaused
        , fmap (("Limits",) . toJSON) _pinpointCampaignLimits
        , (Just . ("MessageConfiguration",) . toJSON) _pinpointCampaignMessageConfiguration
        , (Just . ("Name",) . toJSON) _pinpointCampaignName
        , (Just . ("Schedule",) . toJSON) _pinpointCampaignSchedule
        , (Just . ("SegmentId",) . toJSON) _pinpointCampaignSegmentId
        , fmap (("SegmentVersion",) . toJSON) _pinpointCampaignSegmentVersion
        , fmap (("Tags",) . toJSON) _pinpointCampaignTags
        , fmap (("TreatmentDescription",) . toJSON) _pinpointCampaignTreatmentDescription
        , fmap (("TreatmentName",) . toJSON) _pinpointCampaignTreatmentName
        ]
    }

-- | Constructor for 'PinpointCampaign' containing required fields as
-- arguments.
pinpointCampaign
  :: Val Text -- ^ 'pcApplicationId'
  -> PinpointCampaignMessageConfiguration -- ^ 'pcMessageConfiguration'
  -> Val Text -- ^ 'pcName'
  -> PinpointCampaignSchedule -- ^ 'pcSchedule'
  -> Val Text -- ^ 'pcSegmentId'
  -> PinpointCampaign
pinpointCampaign applicationIdarg messageConfigurationarg namearg schedulearg segmentIdarg =
  PinpointCampaign
  { _pinpointCampaignAdditionalTreatments = Nothing
  , _pinpointCampaignApplicationId = applicationIdarg
  , _pinpointCampaignCampaignHook = Nothing
  , _pinpointCampaignDescription = Nothing
  , _pinpointCampaignHoldoutPercent = Nothing
  , _pinpointCampaignIsPaused = Nothing
  , _pinpointCampaignLimits = Nothing
  , _pinpointCampaignMessageConfiguration = messageConfigurationarg
  , _pinpointCampaignName = namearg
  , _pinpointCampaignSchedule = schedulearg
  , _pinpointCampaignSegmentId = segmentIdarg
  , _pinpointCampaignSegmentVersion = Nothing
  , _pinpointCampaignTags = Nothing
  , _pinpointCampaignTreatmentDescription = Nothing
  , _pinpointCampaignTreatmentName = Nothing
  }

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-campaign.html#cfn-pinpoint-campaign-additionaltreatments
pcAdditionalTreatments :: Lens' PinpointCampaign (Maybe [PinpointCampaignWriteTreatmentResource])
pcAdditionalTreatments = lens _pinpointCampaignAdditionalTreatments (\s a -> s { _pinpointCampaignAdditionalTreatments = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-campaign.html#cfn-pinpoint-campaign-applicationid
pcApplicationId :: Lens' PinpointCampaign (Val Text)
pcApplicationId = lens _pinpointCampaignApplicationId (\s a -> s { _pinpointCampaignApplicationId = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-campaign.html#cfn-pinpoint-campaign-campaignhook
pcCampaignHook :: Lens' PinpointCampaign (Maybe PinpointCampaignCampaignHook)
pcCampaignHook = lens _pinpointCampaignCampaignHook (\s a -> s { _pinpointCampaignCampaignHook = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-campaign.html#cfn-pinpoint-campaign-description
pcDescription :: Lens' PinpointCampaign (Maybe (Val Text))
pcDescription = lens _pinpointCampaignDescription (\s a -> s { _pinpointCampaignDescription = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-campaign.html#cfn-pinpoint-campaign-holdoutpercent
pcHoldoutPercent :: Lens' PinpointCampaign (Maybe (Val Integer))
pcHoldoutPercent = lens _pinpointCampaignHoldoutPercent (\s a -> s { _pinpointCampaignHoldoutPercent = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-campaign.html#cfn-pinpoint-campaign-ispaused
pcIsPaused :: Lens' PinpointCampaign (Maybe (Val Bool))
pcIsPaused = lens _pinpointCampaignIsPaused (\s a -> s { _pinpointCampaignIsPaused = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-campaign.html#cfn-pinpoint-campaign-limits
pcLimits :: Lens' PinpointCampaign (Maybe PinpointCampaignLimits)
pcLimits = lens _pinpointCampaignLimits (\s a -> s { _pinpointCampaignLimits = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-campaign.html#cfn-pinpoint-campaign-messageconfiguration
pcMessageConfiguration :: Lens' PinpointCampaign PinpointCampaignMessageConfiguration
pcMessageConfiguration = lens _pinpointCampaignMessageConfiguration (\s a -> s { _pinpointCampaignMessageConfiguration = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-campaign.html#cfn-pinpoint-campaign-name
pcName :: Lens' PinpointCampaign (Val Text)
pcName = lens _pinpointCampaignName (\s a -> s { _pinpointCampaignName = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-campaign.html#cfn-pinpoint-campaign-schedule
pcSchedule :: Lens' PinpointCampaign PinpointCampaignSchedule
pcSchedule = lens _pinpointCampaignSchedule (\s a -> s { _pinpointCampaignSchedule = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-campaign.html#cfn-pinpoint-campaign-segmentid
pcSegmentId :: Lens' PinpointCampaign (Val Text)
pcSegmentId = lens _pinpointCampaignSegmentId (\s a -> s { _pinpointCampaignSegmentId = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-campaign.html#cfn-pinpoint-campaign-segmentversion
pcSegmentVersion :: Lens' PinpointCampaign (Maybe (Val Integer))
pcSegmentVersion = lens _pinpointCampaignSegmentVersion (\s a -> s { _pinpointCampaignSegmentVersion = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-campaign.html#cfn-pinpoint-campaign-tags
pcTags :: Lens' PinpointCampaign (Maybe Object)
pcTags = lens _pinpointCampaignTags (\s a -> s { _pinpointCampaignTags = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-campaign.html#cfn-pinpoint-campaign-treatmentdescription
pcTreatmentDescription :: Lens' PinpointCampaign (Maybe (Val Text))
pcTreatmentDescription = lens _pinpointCampaignTreatmentDescription (\s a -> s { _pinpointCampaignTreatmentDescription = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-campaign.html#cfn-pinpoint-campaign-treatmentname
pcTreatmentName :: Lens' PinpointCampaign (Maybe (Val Text))
pcTreatmentName = lens _pinpointCampaignTreatmentName (\s a -> s { _pinpointCampaignTreatmentName = a })