packages feed

stratosphere-0.39.0: library-gen/Stratosphere/ResourceProperties/PinpointSegmentDemographic.hs

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

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-segment-segmentdimensions-demographic.html

module Stratosphere.ResourceProperties.PinpointSegmentDemographic where

import Stratosphere.ResourceImports
import Stratosphere.ResourceProperties.PinpointSegmentSetDimension

-- | Full data type definition for PinpointSegmentDemographic. See
-- 'pinpointSegmentDemographic' for a more convenient constructor.
data PinpointSegmentDemographic =
  PinpointSegmentDemographic
  { _pinpointSegmentDemographicAppVersion :: Maybe PinpointSegmentSetDimension
  , _pinpointSegmentDemographicChannel :: Maybe PinpointSegmentSetDimension
  , _pinpointSegmentDemographicDeviceType :: Maybe PinpointSegmentSetDimension
  , _pinpointSegmentDemographicMake :: Maybe PinpointSegmentSetDimension
  , _pinpointSegmentDemographicModel :: Maybe PinpointSegmentSetDimension
  , _pinpointSegmentDemographicPlatform :: Maybe PinpointSegmentSetDimension
  } deriving (Show, Eq)

instance ToJSON PinpointSegmentDemographic where
  toJSON PinpointSegmentDemographic{..} =
    object $
    catMaybes
    [ fmap (("AppVersion",) . toJSON) _pinpointSegmentDemographicAppVersion
    , fmap (("Channel",) . toJSON) _pinpointSegmentDemographicChannel
    , fmap (("DeviceType",) . toJSON) _pinpointSegmentDemographicDeviceType
    , fmap (("Make",) . toJSON) _pinpointSegmentDemographicMake
    , fmap (("Model",) . toJSON) _pinpointSegmentDemographicModel
    , fmap (("Platform",) . toJSON) _pinpointSegmentDemographicPlatform
    ]

-- | Constructor for 'PinpointSegmentDemographic' containing required fields
-- as arguments.
pinpointSegmentDemographic
  :: PinpointSegmentDemographic
pinpointSegmentDemographic  =
  PinpointSegmentDemographic
  { _pinpointSegmentDemographicAppVersion = Nothing
  , _pinpointSegmentDemographicChannel = Nothing
  , _pinpointSegmentDemographicDeviceType = Nothing
  , _pinpointSegmentDemographicMake = Nothing
  , _pinpointSegmentDemographicModel = Nothing
  , _pinpointSegmentDemographicPlatform = Nothing
  }

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-segment-segmentdimensions-demographic.html#cfn-pinpoint-segment-segmentdimensions-demographic-appversion
psdAppVersion :: Lens' PinpointSegmentDemographic (Maybe PinpointSegmentSetDimension)
psdAppVersion = lens _pinpointSegmentDemographicAppVersion (\s a -> s { _pinpointSegmentDemographicAppVersion = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-segment-segmentdimensions-demographic.html#cfn-pinpoint-segment-segmentdimensions-demographic-channel
psdChannel :: Lens' PinpointSegmentDemographic (Maybe PinpointSegmentSetDimension)
psdChannel = lens _pinpointSegmentDemographicChannel (\s a -> s { _pinpointSegmentDemographicChannel = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-segment-segmentdimensions-demographic.html#cfn-pinpoint-segment-segmentdimensions-demographic-devicetype
psdDeviceType :: Lens' PinpointSegmentDemographic (Maybe PinpointSegmentSetDimension)
psdDeviceType = lens _pinpointSegmentDemographicDeviceType (\s a -> s { _pinpointSegmentDemographicDeviceType = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-segment-segmentdimensions-demographic.html#cfn-pinpoint-segment-segmentdimensions-demographic-make
psdMake :: Lens' PinpointSegmentDemographic (Maybe PinpointSegmentSetDimension)
psdMake = lens _pinpointSegmentDemographicMake (\s a -> s { _pinpointSegmentDemographicMake = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-segment-segmentdimensions-demographic.html#cfn-pinpoint-segment-segmentdimensions-demographic-model
psdModel :: Lens' PinpointSegmentDemographic (Maybe PinpointSegmentSetDimension)
psdModel = lens _pinpointSegmentDemographicModel (\s a -> s { _pinpointSegmentDemographicModel = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-segment-segmentdimensions-demographic.html#cfn-pinpoint-segment-segmentdimensions-demographic-platform
psdPlatform :: Lens' PinpointSegmentDemographic (Maybe PinpointSegmentSetDimension)
psdPlatform = lens _pinpointSegmentDemographicPlatform (\s a -> s { _pinpointSegmentDemographicPlatform = a })