{-# 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.ServiceCatalog.ListTagOptions
(
listTagOptions
, ListTagOptions
, ltoFilters
, ltoPageToken
, ltoPageSize
, listTagOptionsResponse
, ListTagOptionsResponse
, ltorsPageToken
, ltorsTagOptionDetails
, ltorsResponseStatus
) where
import Network.AWS.Lens
import Network.AWS.Pager
import Network.AWS.Prelude
import Network.AWS.Request
import Network.AWS.Response
import Network.AWS.ServiceCatalog.Types
import Network.AWS.ServiceCatalog.Types.Product
data ListTagOptions = ListTagOptions'
{ _ltoFilters :: !(Maybe ListTagOptionsFilters)
, _ltoPageToken :: !(Maybe Text)
, _ltoPageSize :: !(Maybe Nat)
} deriving (Eq, Read, Show, Data, Typeable, Generic)
listTagOptions
:: ListTagOptions
listTagOptions =
ListTagOptions'
{_ltoFilters = Nothing, _ltoPageToken = Nothing, _ltoPageSize = Nothing}
ltoFilters :: Lens' ListTagOptions (Maybe ListTagOptionsFilters)
ltoFilters = lens _ltoFilters (\ s a -> s{_ltoFilters = a})
ltoPageToken :: Lens' ListTagOptions (Maybe Text)
ltoPageToken = lens _ltoPageToken (\ s a -> s{_ltoPageToken = a})
ltoPageSize :: Lens' ListTagOptions (Maybe Natural)
ltoPageSize = lens _ltoPageSize (\ s a -> s{_ltoPageSize = a}) . mapping _Nat
instance AWSPager ListTagOptions where
page rq rs
| stop (rs ^. ltorsPageToken) = Nothing
| stop (rs ^. ltorsTagOptionDetails) = Nothing
| otherwise =
Just $ rq & ltoPageToken .~ rs ^. ltorsPageToken
instance AWSRequest ListTagOptions where
type Rs ListTagOptions = ListTagOptionsResponse
request = postJSON serviceCatalog
response
= receiveJSON
(\ s h x ->
ListTagOptionsResponse' <$>
(x .?> "PageToken") <*>
(x .?> "TagOptionDetails" .!@ mempty)
<*> (pure (fromEnum s)))
instance Hashable ListTagOptions where
instance NFData ListTagOptions where
instance ToHeaders ListTagOptions where
toHeaders
= const
(mconcat
["X-Amz-Target" =#
("AWS242ServiceCatalogService.ListTagOptions" ::
ByteString),
"Content-Type" =#
("application/x-amz-json-1.1" :: ByteString)])
instance ToJSON ListTagOptions where
toJSON ListTagOptions'{..}
= object
(catMaybes
[("Filters" .=) <$> _ltoFilters,
("PageToken" .=) <$> _ltoPageToken,
("PageSize" .=) <$> _ltoPageSize])
instance ToPath ListTagOptions where
toPath = const "/"
instance ToQuery ListTagOptions where
toQuery = const mempty
data ListTagOptionsResponse = ListTagOptionsResponse'
{ _ltorsPageToken :: !(Maybe Text)
, _ltorsTagOptionDetails :: !(Maybe [TagOptionDetail])
, _ltorsResponseStatus :: !Int
} deriving (Eq, Read, Show, Data, Typeable, Generic)
listTagOptionsResponse
:: Int
-> ListTagOptionsResponse
listTagOptionsResponse pResponseStatus_ =
ListTagOptionsResponse'
{ _ltorsPageToken = Nothing
, _ltorsTagOptionDetails = Nothing
, _ltorsResponseStatus = pResponseStatus_
}
ltorsPageToken :: Lens' ListTagOptionsResponse (Maybe Text)
ltorsPageToken = lens _ltorsPageToken (\ s a -> s{_ltorsPageToken = a})
ltorsTagOptionDetails :: Lens' ListTagOptionsResponse [TagOptionDetail]
ltorsTagOptionDetails = lens _ltorsTagOptionDetails (\ s a -> s{_ltorsTagOptionDetails = a}) . _Default . _Coerce
ltorsResponseStatus :: Lens' ListTagOptionsResponse Int
ltorsResponseStatus = lens _ltorsResponseStatus (\ s a -> s{_ltorsResponseStatus = a})
instance NFData ListTagOptionsResponse where