{-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE TypeFamilies #-} {-# OPTIONS_GHC -fno-warn-unused-imports #-} {-# OPTIONS_GHC -fno-warn-unused-binds #-} {-# OPTIONS_GHC -fno-warn-unused-matches #-} -- Derived from AWS service descriptions, licensed under Apache 2.0. -- | -- Module : Network.AWS.CloudFormation.EstimateTemplateCost -- Copyright : (c) 2013-2016 Brendan Hay -- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay -- Stability : auto-generated -- Portability : non-portable (GHC extensions) -- -- Returns the estimated monthly cost of a template. The return value is an -- AWS Simple Monthly Calculator URL with a query string that describes the -- resources required to run the template. module Network.AWS.CloudFormation.EstimateTemplateCost ( -- * Creating a Request estimateTemplateCost , EstimateTemplateCost -- * Request Lenses , etcParameters , etcTemplateBody , etcTemplateURL -- * Destructuring the Response , estimateTemplateCostResponse , EstimateTemplateCostResponse -- * Response Lenses , etcrsURL , etcrsResponseStatus ) where import Network.AWS.CloudFormation.Types import Network.AWS.CloudFormation.Types.Product import Network.AWS.Lens import Network.AWS.Prelude import Network.AWS.Request import Network.AWS.Response -- | /See:/ 'estimateTemplateCost' smart constructor. data EstimateTemplateCost = EstimateTemplateCost' { _etcParameters :: !(Maybe [Parameter]) , _etcTemplateBody :: !(Maybe Text) , _etcTemplateURL :: !(Maybe Text) } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'EstimateTemplateCost' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'etcParameters' -- -- * 'etcTemplateBody' -- -- * 'etcTemplateURL' estimateTemplateCost :: EstimateTemplateCost estimateTemplateCost = EstimateTemplateCost' { _etcParameters = Nothing , _etcTemplateBody = Nothing , _etcTemplateURL = Nothing } -- | A list of 'Parameter' structures that specify input parameters. etcParameters :: Lens' EstimateTemplateCost [Parameter] etcParameters = lens _etcParameters (\ s a -> s{_etcParameters = a}) . _Default . _Coerce; -- | Structure containing the template body with a minimum length of 1 byte -- and a maximum length of 51,200 bytes. (For more information, go to -- -- in the AWS CloudFormation User Guide.) -- -- Conditional: You must pass 'TemplateBody' or 'TemplateURL'. If both are -- passed, only 'TemplateBody' is used. etcTemplateBody :: Lens' EstimateTemplateCost (Maybe Text) etcTemplateBody = lens _etcTemplateBody (\ s a -> s{_etcTemplateBody = a}); -- | Location of file containing the template body. The URL must point to a -- template that is located in an Amazon S3 bucket. For more information, -- go to -- -- in the AWS CloudFormation User Guide. -- -- Conditional: You must pass 'TemplateURL' or 'TemplateBody'. If both are -- passed, only 'TemplateBody' is used. etcTemplateURL :: Lens' EstimateTemplateCost (Maybe Text) etcTemplateURL = lens _etcTemplateURL (\ s a -> s{_etcTemplateURL = a}); instance AWSRequest EstimateTemplateCost where type Rs EstimateTemplateCost = EstimateTemplateCostResponse request = postQuery cloudFormation response = receiveXMLWrapper "EstimateTemplateCostResult" (\ s h x -> EstimateTemplateCostResponse' <$> (x .@? "Url") <*> (pure (fromEnum s))) instance Hashable EstimateTemplateCost instance ToHeaders EstimateTemplateCost where toHeaders = const mempty instance ToPath EstimateTemplateCost where toPath = const "/" instance ToQuery EstimateTemplateCost where toQuery EstimateTemplateCost'{..} = mconcat ["Action" =: ("EstimateTemplateCost" :: ByteString), "Version" =: ("2010-05-15" :: ByteString), "Parameters" =: toQuery (toQueryList "member" <$> _etcParameters), "TemplateBody" =: _etcTemplateBody, "TemplateURL" =: _etcTemplateURL] -- | The output for a < EstimateTemplateCost> action. -- -- /See:/ 'estimateTemplateCostResponse' smart constructor. data EstimateTemplateCostResponse = EstimateTemplateCostResponse' { _etcrsURL :: !(Maybe Text) , _etcrsResponseStatus :: !Int } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'EstimateTemplateCostResponse' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'etcrsURL' -- -- * 'etcrsResponseStatus' estimateTemplateCostResponse :: Int -- ^ 'etcrsResponseStatus' -> EstimateTemplateCostResponse estimateTemplateCostResponse pResponseStatus_ = EstimateTemplateCostResponse' { _etcrsURL = Nothing , _etcrsResponseStatus = pResponseStatus_ } -- | An AWS Simple Monthly Calculator URL with a query string that describes -- the resources required to run the template. etcrsURL :: Lens' EstimateTemplateCostResponse (Maybe Text) etcrsURL = lens _etcrsURL (\ s a -> s{_etcrsURL = a}); -- | The response status code. etcrsResponseStatus :: Lens' EstimateTemplateCostResponse Int etcrsResponseStatus = lens _etcrsResponseStatus (\ s a -> s{_etcrsResponseStatus = a});