{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-} -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-usageplan-quotasettings.html module Stratosphere.ResourceProperties.ApiGatewayUsagePlanQuotaSettings where import Control.Lens hiding ((.=)) import Data.Aeson import Data.Maybe (catMaybes) import Data.Monoid (mempty) import Data.Text import Stratosphere.Values import Stratosphere.Types -- | Full data type definition for ApiGatewayUsagePlanQuotaSettings. See -- 'apiGatewayUsagePlanQuotaSettings' for a more convenient constructor. data ApiGatewayUsagePlanQuotaSettings = ApiGatewayUsagePlanQuotaSettings { _apiGatewayUsagePlanQuotaSettingsLimit :: Maybe (Val Integer') , _apiGatewayUsagePlanQuotaSettingsOffset :: Maybe (Val Integer') , _apiGatewayUsagePlanQuotaSettingsPeriod :: Maybe (Val Period) } deriving (Show, Eq) instance ToJSON ApiGatewayUsagePlanQuotaSettings where toJSON ApiGatewayUsagePlanQuotaSettings{..} = object $ catMaybes [ ("Limit" .=) <$> _apiGatewayUsagePlanQuotaSettingsLimit , ("Offset" .=) <$> _apiGatewayUsagePlanQuotaSettingsOffset , ("Period" .=) <$> _apiGatewayUsagePlanQuotaSettingsPeriod ] instance FromJSON ApiGatewayUsagePlanQuotaSettings where parseJSON (Object obj) = ApiGatewayUsagePlanQuotaSettings <$> obj .:? "Limit" <*> obj .:? "Offset" <*> obj .:? "Period" parseJSON _ = mempty -- | Constructor for 'ApiGatewayUsagePlanQuotaSettings' containing required -- fields as arguments. apiGatewayUsagePlanQuotaSettings :: ApiGatewayUsagePlanQuotaSettings apiGatewayUsagePlanQuotaSettings = ApiGatewayUsagePlanQuotaSettings { _apiGatewayUsagePlanQuotaSettingsLimit = Nothing , _apiGatewayUsagePlanQuotaSettingsOffset = Nothing , _apiGatewayUsagePlanQuotaSettingsPeriod = Nothing } -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-usageplan-quotasettings.html#cfn-apigateway-usageplan-quotasettings-limit agupqsLimit :: Lens' ApiGatewayUsagePlanQuotaSettings (Maybe (Val Integer')) agupqsLimit = lens _apiGatewayUsagePlanQuotaSettingsLimit (\s a -> s { _apiGatewayUsagePlanQuotaSettingsLimit = a }) -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-usageplan-quotasettings.html#cfn-apigateway-usageplan-quotasettings-offset agupqsOffset :: Lens' ApiGatewayUsagePlanQuotaSettings (Maybe (Val Integer')) agupqsOffset = lens _apiGatewayUsagePlanQuotaSettingsOffset (\s a -> s { _apiGatewayUsagePlanQuotaSettingsOffset = a }) -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-usageplan-quotasettings.html#cfn-apigateway-usageplan-quotasettings-period agupqsPeriod :: Lens' ApiGatewayUsagePlanQuotaSettings (Maybe (Val Period)) agupqsPeriod = lens _apiGatewayUsagePlanQuotaSettingsPeriod (\s a -> s { _apiGatewayUsagePlanQuotaSettingsPeriod = a })