packages feed

stratosphere-0.46.0: library-gen/Stratosphere/ResourceProperties/PinpointPushTemplateAPNSPushNotificationTemplate.hs

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

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-pushtemplate-apnspushnotificationtemplate.html

module Stratosphere.ResourceProperties.PinpointPushTemplateAPNSPushNotificationTemplate where

import Stratosphere.ResourceImports


-- | Full data type definition for
-- PinpointPushTemplateAPNSPushNotificationTemplate. See
-- 'pinpointPushTemplateAPNSPushNotificationTemplate' for a more convenient
-- constructor.
data PinpointPushTemplateAPNSPushNotificationTemplate =
  PinpointPushTemplateAPNSPushNotificationTemplate
  { _pinpointPushTemplateAPNSPushNotificationTemplateAction :: Maybe (Val Text)
  , _pinpointPushTemplateAPNSPushNotificationTemplateBody :: Maybe (Val Text)
  , _pinpointPushTemplateAPNSPushNotificationTemplateMediaUrl :: Maybe (Val Text)
  , _pinpointPushTemplateAPNSPushNotificationTemplateSound :: Maybe (Val Text)
  , _pinpointPushTemplateAPNSPushNotificationTemplateTitle :: Maybe (Val Text)
  , _pinpointPushTemplateAPNSPushNotificationTemplateUrl :: Maybe (Val Text)
  } deriving (Show, Eq)

instance ToJSON PinpointPushTemplateAPNSPushNotificationTemplate where
  toJSON PinpointPushTemplateAPNSPushNotificationTemplate{..} =
    object $
    catMaybes
    [ fmap (("Action",) . toJSON) _pinpointPushTemplateAPNSPushNotificationTemplateAction
    , fmap (("Body",) . toJSON) _pinpointPushTemplateAPNSPushNotificationTemplateBody
    , fmap (("MediaUrl",) . toJSON) _pinpointPushTemplateAPNSPushNotificationTemplateMediaUrl
    , fmap (("Sound",) . toJSON) _pinpointPushTemplateAPNSPushNotificationTemplateSound
    , fmap (("Title",) . toJSON) _pinpointPushTemplateAPNSPushNotificationTemplateTitle
    , fmap (("Url",) . toJSON) _pinpointPushTemplateAPNSPushNotificationTemplateUrl
    ]

-- | Constructor for 'PinpointPushTemplateAPNSPushNotificationTemplate'
-- containing required fields as arguments.
pinpointPushTemplateAPNSPushNotificationTemplate
  :: PinpointPushTemplateAPNSPushNotificationTemplate
pinpointPushTemplateAPNSPushNotificationTemplate  =
  PinpointPushTemplateAPNSPushNotificationTemplate
  { _pinpointPushTemplateAPNSPushNotificationTemplateAction = Nothing
  , _pinpointPushTemplateAPNSPushNotificationTemplateBody = Nothing
  , _pinpointPushTemplateAPNSPushNotificationTemplateMediaUrl = Nothing
  , _pinpointPushTemplateAPNSPushNotificationTemplateSound = Nothing
  , _pinpointPushTemplateAPNSPushNotificationTemplateTitle = Nothing
  , _pinpointPushTemplateAPNSPushNotificationTemplateUrl = Nothing
  }

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-pushtemplate-apnspushnotificationtemplate.html#cfn-pinpoint-pushtemplate-apnspushnotificationtemplate-action
pptapnspntAction :: Lens' PinpointPushTemplateAPNSPushNotificationTemplate (Maybe (Val Text))
pptapnspntAction = lens _pinpointPushTemplateAPNSPushNotificationTemplateAction (\s a -> s { _pinpointPushTemplateAPNSPushNotificationTemplateAction = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-pushtemplate-apnspushnotificationtemplate.html#cfn-pinpoint-pushtemplate-apnspushnotificationtemplate-body
pptapnspntBody :: Lens' PinpointPushTemplateAPNSPushNotificationTemplate (Maybe (Val Text))
pptapnspntBody = lens _pinpointPushTemplateAPNSPushNotificationTemplateBody (\s a -> s { _pinpointPushTemplateAPNSPushNotificationTemplateBody = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-pushtemplate-apnspushnotificationtemplate.html#cfn-pinpoint-pushtemplate-apnspushnotificationtemplate-mediaurl
pptapnspntMediaUrl :: Lens' PinpointPushTemplateAPNSPushNotificationTemplate (Maybe (Val Text))
pptapnspntMediaUrl = lens _pinpointPushTemplateAPNSPushNotificationTemplateMediaUrl (\s a -> s { _pinpointPushTemplateAPNSPushNotificationTemplateMediaUrl = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-pushtemplate-apnspushnotificationtemplate.html#cfn-pinpoint-pushtemplate-apnspushnotificationtemplate-sound
pptapnspntSound :: Lens' PinpointPushTemplateAPNSPushNotificationTemplate (Maybe (Val Text))
pptapnspntSound = lens _pinpointPushTemplateAPNSPushNotificationTemplateSound (\s a -> s { _pinpointPushTemplateAPNSPushNotificationTemplateSound = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-pushtemplate-apnspushnotificationtemplate.html#cfn-pinpoint-pushtemplate-apnspushnotificationtemplate-title
pptapnspntTitle :: Lens' PinpointPushTemplateAPNSPushNotificationTemplate (Maybe (Val Text))
pptapnspntTitle = lens _pinpointPushTemplateAPNSPushNotificationTemplateTitle (\s a -> s { _pinpointPushTemplateAPNSPushNotificationTemplateTitle = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-pushtemplate-apnspushnotificationtemplate.html#cfn-pinpoint-pushtemplate-apnspushnotificationtemplate-url
pptapnspntUrl :: Lens' PinpointPushTemplateAPNSPushNotificationTemplate (Maybe (Val Text))
pptapnspntUrl = lens _pinpointPushTemplateAPNSPushNotificationTemplateUrl (\s a -> s { _pinpointPushTemplateAPNSPushNotificationTemplateUrl = a })