{-# 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 #-}
module Network.AWS.CostAndUsageReport.DescribeReportDefinitions
(
describeReportDefinitions
, DescribeReportDefinitions
, drdNextToken
, drdMaxResults
, describeReportDefinitionsResponse
, DescribeReportDefinitionsResponse
, drdrsNextToken
, drdrsReportDefinitions
, drdrsResponseStatus
) where
import Network.AWS.CostAndUsageReport.Types
import Network.AWS.CostAndUsageReport.Types.Product
import Network.AWS.Lens
import Network.AWS.Pager
import Network.AWS.Prelude
import Network.AWS.Request
import Network.AWS.Response
data DescribeReportDefinitions = DescribeReportDefinitions'
{ _drdNextToken :: !(Maybe Text)
, _drdMaxResults :: !(Maybe Nat)
} deriving (Eq, Read, Show, Data, Typeable, Generic)
describeReportDefinitions
:: DescribeReportDefinitions
describeReportDefinitions =
DescribeReportDefinitions' {_drdNextToken = Nothing, _drdMaxResults = Nothing}
drdNextToken :: Lens' DescribeReportDefinitions (Maybe Text)
drdNextToken = lens _drdNextToken (\ s a -> s{_drdNextToken = a})
drdMaxResults :: Lens' DescribeReportDefinitions (Maybe Natural)
drdMaxResults = lens _drdMaxResults (\ s a -> s{_drdMaxResults = a}) . mapping _Nat
instance AWSPager DescribeReportDefinitions where
page rq rs
| stop (rs ^. drdrsNextToken) = Nothing
| stop (rs ^. drdrsReportDefinitions) = Nothing
| otherwise =
Just $ rq & drdNextToken .~ rs ^. drdrsNextToken
instance AWSRequest DescribeReportDefinitions where
type Rs DescribeReportDefinitions =
DescribeReportDefinitionsResponse
request = postJSON costAndUsageReport
response
= receiveJSON
(\ s h x ->
DescribeReportDefinitionsResponse' <$>
(x .?> "NextToken") <*>
(x .?> "ReportDefinitions" .!@ mempty)
<*> (pure (fromEnum s)))
instance Hashable DescribeReportDefinitions where
instance NFData DescribeReportDefinitions where
instance ToHeaders DescribeReportDefinitions where
toHeaders
= const
(mconcat
["X-Amz-Target" =#
("AWSOrigamiServiceGatewayService.DescribeReportDefinitions"
:: ByteString),
"Content-Type" =#
("application/x-amz-json-1.1" :: ByteString)])
instance ToJSON DescribeReportDefinitions where
toJSON DescribeReportDefinitions'{..}
= object
(catMaybes
[("NextToken" .=) <$> _drdNextToken,
("MaxResults" .=) <$> _drdMaxResults])
instance ToPath DescribeReportDefinitions where
toPath = const "/"
instance ToQuery DescribeReportDefinitions where
toQuery = const mempty
data DescribeReportDefinitionsResponse = DescribeReportDefinitionsResponse'
{ _drdrsNextToken :: !(Maybe Text)
, _drdrsReportDefinitions :: !(Maybe [ReportDefinition])
, _drdrsResponseStatus :: !Int
} deriving (Eq, Read, Show, Data, Typeable, Generic)
describeReportDefinitionsResponse
:: Int
-> DescribeReportDefinitionsResponse
describeReportDefinitionsResponse pResponseStatus_ =
DescribeReportDefinitionsResponse'
{ _drdrsNextToken = Nothing
, _drdrsReportDefinitions = Nothing
, _drdrsResponseStatus = pResponseStatus_
}
drdrsNextToken :: Lens' DescribeReportDefinitionsResponse (Maybe Text)
drdrsNextToken = lens _drdrsNextToken (\ s a -> s{_drdrsNextToken = a})
drdrsReportDefinitions :: Lens' DescribeReportDefinitionsResponse [ReportDefinition]
drdrsReportDefinitions = lens _drdrsReportDefinitions (\ s a -> s{_drdrsReportDefinitions = a}) . _Default . _Coerce
drdrsResponseStatus :: Lens' DescribeReportDefinitionsResponse Int
drdrsResponseStatus = lens _drdrsResponseStatus (\ s a -> s{_drdrsResponseStatus = a})
instance NFData DescribeReportDefinitionsResponse
where