{-# 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.CloudDirectory.ListTagsForResource
(
listTagsForResource
, ListTagsForResource
, ltfrNextToken
, ltfrMaxResults
, ltfrResourceARN
, listTagsForResourceResponse
, ListTagsForResourceResponse
, ltfrrsNextToken
, ltfrrsTags
, ltfrrsResponseStatus
) where
import Network.AWS.CloudDirectory.Types
import Network.AWS.CloudDirectory.Types.Product
import Network.AWS.Lens
import Network.AWS.Pager
import Network.AWS.Prelude
import Network.AWS.Request
import Network.AWS.Response
data ListTagsForResource = ListTagsForResource'
{ _ltfrNextToken :: !(Maybe Text)
, _ltfrMaxResults :: !(Maybe Nat)
, _ltfrResourceARN :: !Text
} deriving (Eq, Read, Show, Data, Typeable, Generic)
listTagsForResource
:: Text
-> ListTagsForResource
listTagsForResource pResourceARN_ =
ListTagsForResource'
{ _ltfrNextToken = Nothing
, _ltfrMaxResults = Nothing
, _ltfrResourceARN = pResourceARN_
}
ltfrNextToken :: Lens' ListTagsForResource (Maybe Text)
ltfrNextToken = lens _ltfrNextToken (\ s a -> s{_ltfrNextToken = a})
ltfrMaxResults :: Lens' ListTagsForResource (Maybe Natural)
ltfrMaxResults = lens _ltfrMaxResults (\ s a -> s{_ltfrMaxResults = a}) . mapping _Nat
ltfrResourceARN :: Lens' ListTagsForResource Text
ltfrResourceARN = lens _ltfrResourceARN (\ s a -> s{_ltfrResourceARN = a})
instance AWSPager ListTagsForResource where
page rq rs
| stop (rs ^. ltfrrsNextToken) = Nothing
| stop (rs ^. ltfrrsTags) = Nothing
| otherwise =
Just $ rq & ltfrNextToken .~ rs ^. ltfrrsNextToken
instance AWSRequest ListTagsForResource where
type Rs ListTagsForResource =
ListTagsForResourceResponse
request = postJSON cloudDirectory
response
= receiveJSON
(\ s h x ->
ListTagsForResourceResponse' <$>
(x .?> "NextToken") <*> (x .?> "Tags" .!@ mempty) <*>
(pure (fromEnum s)))
instance Hashable ListTagsForResource where
instance NFData ListTagsForResource where
instance ToHeaders ListTagsForResource where
toHeaders = const mempty
instance ToJSON ListTagsForResource where
toJSON ListTagsForResource'{..}
= object
(catMaybes
[("NextToken" .=) <$> _ltfrNextToken,
("MaxResults" .=) <$> _ltfrMaxResults,
Just ("ResourceArn" .= _ltfrResourceARN)])
instance ToPath ListTagsForResource where
toPath
= const "/amazonclouddirectory/2017-01-11/tags"
instance ToQuery ListTagsForResource where
toQuery = const mempty
data ListTagsForResourceResponse = ListTagsForResourceResponse'
{ _ltfrrsNextToken :: !(Maybe Text)
, _ltfrrsTags :: !(Maybe [Tag])
, _ltfrrsResponseStatus :: !Int
} deriving (Eq, Read, Show, Data, Typeable, Generic)
listTagsForResourceResponse
:: Int
-> ListTagsForResourceResponse
listTagsForResourceResponse pResponseStatus_ =
ListTagsForResourceResponse'
{ _ltfrrsNextToken = Nothing
, _ltfrrsTags = Nothing
, _ltfrrsResponseStatus = pResponseStatus_
}
ltfrrsNextToken :: Lens' ListTagsForResourceResponse (Maybe Text)
ltfrrsNextToken = lens _ltfrrsNextToken (\ s a -> s{_ltfrrsNextToken = a})
ltfrrsTags :: Lens' ListTagsForResourceResponse [Tag]
ltfrrsTags = lens _ltfrrsTags (\ s a -> s{_ltfrrsTags = a}) . _Default . _Coerce
ltfrrsResponseStatus :: Lens' ListTagsForResourceResponse Int
ltfrrsResponseStatus = lens _ltfrrsResponseStatus (\ s a -> s{_ltfrrsResponseStatus = a})
instance NFData ListTagsForResourceResponse where