packages feed

stratosphere-0.24.2: library-gen/Stratosphere/ResourceProperties/AmazonMQBrokerMaintenanceWindow.hs

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

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amazonmq-broker-maintenancewindow.html

module Stratosphere.ResourceProperties.AmazonMQBrokerMaintenanceWindow where

import Stratosphere.ResourceImports


-- | Full data type definition for AmazonMQBrokerMaintenanceWindow. See
-- 'amazonMQBrokerMaintenanceWindow' for a more convenient constructor.
data AmazonMQBrokerMaintenanceWindow =
  AmazonMQBrokerMaintenanceWindow
  { _amazonMQBrokerMaintenanceWindowDayOfWeek :: Val Text
  , _amazonMQBrokerMaintenanceWindowTimeOfDay :: Val Text
  , _amazonMQBrokerMaintenanceWindowTimeZone :: Val Text
  } deriving (Show, Eq)

instance ToJSON AmazonMQBrokerMaintenanceWindow where
  toJSON AmazonMQBrokerMaintenanceWindow{..} =
    object $
    catMaybes
    [ (Just . ("DayOfWeek",) . toJSON) _amazonMQBrokerMaintenanceWindowDayOfWeek
    , (Just . ("TimeOfDay",) . toJSON) _amazonMQBrokerMaintenanceWindowTimeOfDay
    , (Just . ("TimeZone",) . toJSON) _amazonMQBrokerMaintenanceWindowTimeZone
    ]

instance FromJSON AmazonMQBrokerMaintenanceWindow where
  parseJSON (Object obj) =
    AmazonMQBrokerMaintenanceWindow <$>
      (obj .: "DayOfWeek") <*>
      (obj .: "TimeOfDay") <*>
      (obj .: "TimeZone")
  parseJSON _ = mempty

-- | Constructor for 'AmazonMQBrokerMaintenanceWindow' containing required
-- fields as arguments.
amazonMQBrokerMaintenanceWindow
  :: Val Text -- ^ 'amqbmwDayOfWeek'
  -> Val Text -- ^ 'amqbmwTimeOfDay'
  -> Val Text -- ^ 'amqbmwTimeZone'
  -> AmazonMQBrokerMaintenanceWindow
amazonMQBrokerMaintenanceWindow dayOfWeekarg timeOfDayarg timeZonearg =
  AmazonMQBrokerMaintenanceWindow
  { _amazonMQBrokerMaintenanceWindowDayOfWeek = dayOfWeekarg
  , _amazonMQBrokerMaintenanceWindowTimeOfDay = timeOfDayarg
  , _amazonMQBrokerMaintenanceWindowTimeZone = timeZonearg
  }

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amazonmq-broker-maintenancewindow.html#cfn-amazonmq-broker-maintenancewindow-dayofweek
amqbmwDayOfWeek :: Lens' AmazonMQBrokerMaintenanceWindow (Val Text)
amqbmwDayOfWeek = lens _amazonMQBrokerMaintenanceWindowDayOfWeek (\s a -> s { _amazonMQBrokerMaintenanceWindowDayOfWeek = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amazonmq-broker-maintenancewindow.html#cfn-amazonmq-broker-maintenancewindow-timeofday
amqbmwTimeOfDay :: Lens' AmazonMQBrokerMaintenanceWindow (Val Text)
amqbmwTimeOfDay = lens _amazonMQBrokerMaintenanceWindowTimeOfDay (\s a -> s { _amazonMQBrokerMaintenanceWindowTimeOfDay = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amazonmq-broker-maintenancewindow.html#cfn-amazonmq-broker-maintenancewindow-timezone
amqbmwTimeZone :: Lens' AmazonMQBrokerMaintenanceWindow (Val Text)
amqbmwTimeZone = lens _amazonMQBrokerMaintenanceWindowTimeZone (\s a -> s { _amazonMQBrokerMaintenanceWindowTimeZone = a })