{-# 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.CostExplorer.GetTags
(
getTags
, GetTags
, gtNextPageToken
, gtSearchString
, gtTagKey
, gtTimePeriod
, getTagsResponse
, GetTagsResponse
, gtrsNextPageToken
, gtrsResponseStatus
, gtrsTags
, gtrsReturnSize
, gtrsTotalSize
) where
import Network.AWS.CostExplorer.Types
import Network.AWS.CostExplorer.Types.Product
import Network.AWS.Lens
import Network.AWS.Prelude
import Network.AWS.Request
import Network.AWS.Response
data GetTags = GetTags'
{ _gtNextPageToken :: !(Maybe Text)
, _gtSearchString :: !(Maybe Text)
, _gtTagKey :: !(Maybe Text)
, _gtTimePeriod :: !DateInterval
} deriving (Eq, Read, Show, Data, Typeable, Generic)
getTags
:: DateInterval
-> GetTags
getTags pTimePeriod_ =
GetTags'
{ _gtNextPageToken = Nothing
, _gtSearchString = Nothing
, _gtTagKey = Nothing
, _gtTimePeriod = pTimePeriod_
}
gtNextPageToken :: Lens' GetTags (Maybe Text)
gtNextPageToken = lens _gtNextPageToken (\ s a -> s{_gtNextPageToken = a})
gtSearchString :: Lens' GetTags (Maybe Text)
gtSearchString = lens _gtSearchString (\ s a -> s{_gtSearchString = a})
gtTagKey :: Lens' GetTags (Maybe Text)
gtTagKey = lens _gtTagKey (\ s a -> s{_gtTagKey = a})
gtTimePeriod :: Lens' GetTags DateInterval
gtTimePeriod = lens _gtTimePeriod (\ s a -> s{_gtTimePeriod = a})
instance AWSRequest GetTags where
type Rs GetTags = GetTagsResponse
request = postJSON costExplorer
response
= receiveJSON
(\ s h x ->
GetTagsResponse' <$>
(x .?> "NextPageToken") <*> (pure (fromEnum s)) <*>
(x .?> "Tags" .!@ mempty)
<*> (x .:> "ReturnSize")
<*> (x .:> "TotalSize"))
instance Hashable GetTags where
instance NFData GetTags where
instance ToHeaders GetTags where
toHeaders
= const
(mconcat
["X-Amz-Target" =#
("AWSInsightsIndexService.GetTags" :: ByteString),
"Content-Type" =#
("application/x-amz-json-1.1" :: ByteString)])
instance ToJSON GetTags where
toJSON GetTags'{..}
= object
(catMaybes
[("NextPageToken" .=) <$> _gtNextPageToken,
("SearchString" .=) <$> _gtSearchString,
("TagKey" .=) <$> _gtTagKey,
Just ("TimePeriod" .= _gtTimePeriod)])
instance ToPath GetTags where
toPath = const "/"
instance ToQuery GetTags where
toQuery = const mempty
data GetTagsResponse = GetTagsResponse'
{ _gtrsNextPageToken :: !(Maybe Text)
, _gtrsResponseStatus :: !Int
, _gtrsTags :: ![Text]
, _gtrsReturnSize :: !Int
, _gtrsTotalSize :: !Int
} deriving (Eq, Read, Show, Data, Typeable, Generic)
getTagsResponse
:: Int
-> Int
-> Int
-> GetTagsResponse
getTagsResponse pResponseStatus_ pReturnSize_ pTotalSize_ =
GetTagsResponse'
{ _gtrsNextPageToken = Nothing
, _gtrsResponseStatus = pResponseStatus_
, _gtrsTags = mempty
, _gtrsReturnSize = pReturnSize_
, _gtrsTotalSize = pTotalSize_
}
gtrsNextPageToken :: Lens' GetTagsResponse (Maybe Text)
gtrsNextPageToken = lens _gtrsNextPageToken (\ s a -> s{_gtrsNextPageToken = a})
gtrsResponseStatus :: Lens' GetTagsResponse Int
gtrsResponseStatus = lens _gtrsResponseStatus (\ s a -> s{_gtrsResponseStatus = a})
gtrsTags :: Lens' GetTagsResponse [Text]
gtrsTags = lens _gtrsTags (\ s a -> s{_gtrsTags = a}) . _Coerce
gtrsReturnSize :: Lens' GetTagsResponse Int
gtrsReturnSize = lens _gtrsReturnSize (\ s a -> s{_gtrsReturnSize = a})
gtrsTotalSize :: Lens' GetTagsResponse Int
gtrsTotalSize = lens _gtrsTotalSize (\ s a -> s{_gtrsTotalSize = a})
instance NFData GetTagsResponse where