amazonka-pricing-1.6.0: gen/Network/AWS/Pricing/GetAttributeValues.hs
{-# 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.Pricing.GetAttributeValues
-- Copyright : (c) 2013-2018 Brendan Hay
-- License : Mozilla Public License, v. 2.0.
-- Maintainer : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-- Stability : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Returns a list of attribute values. Attibutes are similar to the details in a Price List API offer file. For a list of available attributes, see <http://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/reading-an-offer.html#pps-defs Offer File Definitions> in the <http://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/billing-what-is.html AWS Billing and Cost Management User Guide> .
--
--
--
-- This operation returns paginated results.
module Network.AWS.Pricing.GetAttributeValues
(
-- * Creating a Request
getAttributeValues
, GetAttributeValues
-- * Request Lenses
, gavNextToken
, gavMaxResults
, gavServiceCode
, gavAttributeName
-- * Destructuring the Response
, getAttributeValuesResponse
, GetAttributeValuesResponse
-- * Response Lenses
, gavrsAttributeValues
, gavrsNextToken
, gavrsResponseStatus
) where
import Network.AWS.Lens
import Network.AWS.Pager
import Network.AWS.Prelude
import Network.AWS.Pricing.Types
import Network.AWS.Pricing.Types.Product
import Network.AWS.Request
import Network.AWS.Response
-- | /See:/ 'getAttributeValues' smart constructor.
data GetAttributeValues = GetAttributeValues'
{ _gavNextToken :: !(Maybe Text)
, _gavMaxResults :: !(Maybe Nat)
, _gavServiceCode :: !Text
, _gavAttributeName :: !Text
} deriving (Eq, Read, Show, Data, Typeable, Generic)
-- | Creates a value of 'GetAttributeValues' with the minimum fields required to make a request.
--
-- Use one of the following lenses to modify other fields as desired:
--
-- * 'gavNextToken' - The pagination token that indicates the next set of results that you want to retrieve.
--
-- * 'gavMaxResults' - The maximum number of results to return in response.
--
-- * 'gavServiceCode' - The service code for the service whose attributes you want to retrieve. For example, if you want the retrieve an EC2 attribute, use @AmazonEC2@ .
--
-- * 'gavAttributeName' - The name of the attribute that you want to retrieve the values for, such as @volumeType@ .
getAttributeValues
:: Text -- ^ 'gavServiceCode'
-> Text -- ^ 'gavAttributeName'
-> GetAttributeValues
getAttributeValues pServiceCode_ pAttributeName_ =
GetAttributeValues'
{ _gavNextToken = Nothing
, _gavMaxResults = Nothing
, _gavServiceCode = pServiceCode_
, _gavAttributeName = pAttributeName_
}
-- | The pagination token that indicates the next set of results that you want to retrieve.
gavNextToken :: Lens' GetAttributeValues (Maybe Text)
gavNextToken = lens _gavNextToken (\ s a -> s{_gavNextToken = a})
-- | The maximum number of results to return in response.
gavMaxResults :: Lens' GetAttributeValues (Maybe Natural)
gavMaxResults = lens _gavMaxResults (\ s a -> s{_gavMaxResults = a}) . mapping _Nat
-- | The service code for the service whose attributes you want to retrieve. For example, if you want the retrieve an EC2 attribute, use @AmazonEC2@ .
gavServiceCode :: Lens' GetAttributeValues Text
gavServiceCode = lens _gavServiceCode (\ s a -> s{_gavServiceCode = a})
-- | The name of the attribute that you want to retrieve the values for, such as @volumeType@ .
gavAttributeName :: Lens' GetAttributeValues Text
gavAttributeName = lens _gavAttributeName (\ s a -> s{_gavAttributeName = a})
instance AWSPager GetAttributeValues where
page rq rs
| stop (rs ^. gavrsNextToken) = Nothing
| stop (rs ^. gavrsAttributeValues) = Nothing
| otherwise =
Just $ rq & gavNextToken .~ rs ^. gavrsNextToken
instance AWSRequest GetAttributeValues where
type Rs GetAttributeValues =
GetAttributeValuesResponse
request = postJSON pricing
response
= receiveJSON
(\ s h x ->
GetAttributeValuesResponse' <$>
(x .?> "AttributeValues" .!@ mempty) <*>
(x .?> "NextToken")
<*> (pure (fromEnum s)))
instance Hashable GetAttributeValues where
instance NFData GetAttributeValues where
instance ToHeaders GetAttributeValues where
toHeaders
= const
(mconcat
["X-Amz-Target" =#
("AWSPriceListService.GetAttributeValues" ::
ByteString),
"Content-Type" =#
("application/x-amz-json-1.1" :: ByteString)])
instance ToJSON GetAttributeValues where
toJSON GetAttributeValues'{..}
= object
(catMaybes
[("NextToken" .=) <$> _gavNextToken,
("MaxResults" .=) <$> _gavMaxResults,
Just ("ServiceCode" .= _gavServiceCode),
Just ("AttributeName" .= _gavAttributeName)])
instance ToPath GetAttributeValues where
toPath = const "/"
instance ToQuery GetAttributeValues where
toQuery = const mempty
-- | /See:/ 'getAttributeValuesResponse' smart constructor.
data GetAttributeValuesResponse = GetAttributeValuesResponse'
{ _gavrsAttributeValues :: !(Maybe [AttributeValue])
, _gavrsNextToken :: !(Maybe Text)
, _gavrsResponseStatus :: !Int
} deriving (Eq, Read, Show, Data, Typeable, Generic)
-- | Creates a value of 'GetAttributeValuesResponse' with the minimum fields required to make a request.
--
-- Use one of the following lenses to modify other fields as desired:
--
-- * 'gavrsAttributeValues' - The list of values for an attribute. For example, @Throughput Optimized HDD@ and @Provisioned IOPS@ are two available values for the @AmazonEC2@ @volumeType@ .
--
-- * 'gavrsNextToken' - The pagination token that indicates the next set of results to retrieve.
--
-- * 'gavrsResponseStatus' - -- | The response status code.
getAttributeValuesResponse
:: Int -- ^ 'gavrsResponseStatus'
-> GetAttributeValuesResponse
getAttributeValuesResponse pResponseStatus_ =
GetAttributeValuesResponse'
{ _gavrsAttributeValues = Nothing
, _gavrsNextToken = Nothing
, _gavrsResponseStatus = pResponseStatus_
}
-- | The list of values for an attribute. For example, @Throughput Optimized HDD@ and @Provisioned IOPS@ are two available values for the @AmazonEC2@ @volumeType@ .
gavrsAttributeValues :: Lens' GetAttributeValuesResponse [AttributeValue]
gavrsAttributeValues = lens _gavrsAttributeValues (\ s a -> s{_gavrsAttributeValues = a}) . _Default . _Coerce
-- | The pagination token that indicates the next set of results to retrieve.
gavrsNextToken :: Lens' GetAttributeValuesResponse (Maybe Text)
gavrsNextToken = lens _gavrsNextToken (\ s a -> s{_gavrsNextToken = a})
-- | -- | The response status code.
gavrsResponseStatus :: Lens' GetAttributeValuesResponse Int
gavrsResponseStatus = lens _gavrsResponseStatus (\ s a -> s{_gavrsResponseStatus = a})
instance NFData GetAttributeValuesResponse where