stratosphere-0.23.0: library-gen/Stratosphere/ResourceProperties/BudgetsBudgetNotificationWithSubscribers.hs
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE TupleSections #-}
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-budgets-budget-notificationwithsubscribers.html
module Stratosphere.ResourceProperties.BudgetsBudgetNotificationWithSubscribers where
import Stratosphere.ResourceImports
import Stratosphere.ResourceProperties.BudgetsBudgetNotification
import Stratosphere.ResourceProperties.BudgetsBudgetSubscriber
-- | Full data type definition for BudgetsBudgetNotificationWithSubscribers.
-- See 'budgetsBudgetNotificationWithSubscribers' for a more convenient
-- constructor.
data BudgetsBudgetNotificationWithSubscribers =
BudgetsBudgetNotificationWithSubscribers
{ _budgetsBudgetNotificationWithSubscribersNotification :: BudgetsBudgetNotification
, _budgetsBudgetNotificationWithSubscribersSubscribers :: [BudgetsBudgetSubscriber]
} deriving (Show, Eq)
instance ToJSON BudgetsBudgetNotificationWithSubscribers where
toJSON BudgetsBudgetNotificationWithSubscribers{..} =
object $
catMaybes
[ (Just . ("Notification",) . toJSON) _budgetsBudgetNotificationWithSubscribersNotification
, (Just . ("Subscribers",) . toJSON) _budgetsBudgetNotificationWithSubscribersSubscribers
]
instance FromJSON BudgetsBudgetNotificationWithSubscribers where
parseJSON (Object obj) =
BudgetsBudgetNotificationWithSubscribers <$>
(obj .: "Notification") <*>
(obj .: "Subscribers")
parseJSON _ = mempty
-- | Constructor for 'BudgetsBudgetNotificationWithSubscribers' containing
-- required fields as arguments.
budgetsBudgetNotificationWithSubscribers
:: BudgetsBudgetNotification -- ^ 'bbnwsNotification'
-> [BudgetsBudgetSubscriber] -- ^ 'bbnwsSubscribers'
-> BudgetsBudgetNotificationWithSubscribers
budgetsBudgetNotificationWithSubscribers notificationarg subscribersarg =
BudgetsBudgetNotificationWithSubscribers
{ _budgetsBudgetNotificationWithSubscribersNotification = notificationarg
, _budgetsBudgetNotificationWithSubscribersSubscribers = subscribersarg
}
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-budgets-budget-notificationwithsubscribers.html#cfn-budgets-budget-notificationwithsubscribers-notification
bbnwsNotification :: Lens' BudgetsBudgetNotificationWithSubscribers BudgetsBudgetNotification
bbnwsNotification = lens _budgetsBudgetNotificationWithSubscribersNotification (\s a -> s { _budgetsBudgetNotificationWithSubscribersNotification = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-budgets-budget-notificationwithsubscribers.html#cfn-budgets-budget-notificationwithsubscribers-subscribers
bbnwsSubscribers :: Lens' BudgetsBudgetNotificationWithSubscribers [BudgetsBudgetSubscriber]
bbnwsSubscribers = lens _budgetsBudgetNotificationWithSubscribersSubscribers (\s a -> s { _budgetsBudgetNotificationWithSubscribersSubscribers = a })