packages feed

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

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

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

module Stratosphere.ResourceProperties.PinpointApplicationSettingsLimits where

import Stratosphere.ResourceImports


-- | Full data type definition for PinpointApplicationSettingsLimits. See
-- 'pinpointApplicationSettingsLimits' for a more convenient constructor.
data PinpointApplicationSettingsLimits =
  PinpointApplicationSettingsLimits
  { _pinpointApplicationSettingsLimitsDaily :: Maybe (Val Integer)
  , _pinpointApplicationSettingsLimitsMaximumDuration :: Maybe (Val Integer)
  , _pinpointApplicationSettingsLimitsMessagesPerSecond :: Maybe (Val Integer)
  , _pinpointApplicationSettingsLimitsTotal :: Maybe (Val Integer)
  } deriving (Show, Eq)

instance ToJSON PinpointApplicationSettingsLimits where
  toJSON PinpointApplicationSettingsLimits{..} =
    object $
    catMaybes
    [ fmap (("Daily",) . toJSON) _pinpointApplicationSettingsLimitsDaily
    , fmap (("MaximumDuration",) . toJSON) _pinpointApplicationSettingsLimitsMaximumDuration
    , fmap (("MessagesPerSecond",) . toJSON) _pinpointApplicationSettingsLimitsMessagesPerSecond
    , fmap (("Total",) . toJSON) _pinpointApplicationSettingsLimitsTotal
    ]

-- | Constructor for 'PinpointApplicationSettingsLimits' containing required
-- fields as arguments.
pinpointApplicationSettingsLimits
  :: PinpointApplicationSettingsLimits
pinpointApplicationSettingsLimits  =
  PinpointApplicationSettingsLimits
  { _pinpointApplicationSettingsLimitsDaily = Nothing
  , _pinpointApplicationSettingsLimitsMaximumDuration = Nothing
  , _pinpointApplicationSettingsLimitsMessagesPerSecond = Nothing
  , _pinpointApplicationSettingsLimitsTotal = Nothing
  }

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-applicationsettings-limits.html#cfn-pinpoint-applicationsettings-limits-daily
paslDaily :: Lens' PinpointApplicationSettingsLimits (Maybe (Val Integer))
paslDaily = lens _pinpointApplicationSettingsLimitsDaily (\s a -> s { _pinpointApplicationSettingsLimitsDaily = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-applicationsettings-limits.html#cfn-pinpoint-applicationsettings-limits-maximumduration
paslMaximumDuration :: Lens' PinpointApplicationSettingsLimits (Maybe (Val Integer))
paslMaximumDuration = lens _pinpointApplicationSettingsLimitsMaximumDuration (\s a -> s { _pinpointApplicationSettingsLimitsMaximumDuration = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-applicationsettings-limits.html#cfn-pinpoint-applicationsettings-limits-messagespersecond
paslMessagesPerSecond :: Lens' PinpointApplicationSettingsLimits (Maybe (Val Integer))
paslMessagesPerSecond = lens _pinpointApplicationSettingsLimitsMessagesPerSecond (\s a -> s { _pinpointApplicationSettingsLimitsMessagesPerSecond = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-applicationsettings-limits.html#cfn-pinpoint-applicationsettings-limits-total
paslTotal :: Lens' PinpointApplicationSettingsLimits (Maybe (Val Integer))
paslTotal = lens _pinpointApplicationSettingsLimitsTotal (\s a -> s { _pinpointApplicationSettingsLimitsTotal = a })