{-# 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.ResourceGroups.SearchResources
(
searchResources
, SearchResources
, srNextToken
, srMaxResults
, srResourceQuery
, searchResourcesResponse
, SearchResourcesResponse
, srrsNextToken
, srrsResourceIdentifiers
, srrsResponseStatus
) where
import Network.AWS.Lens
import Network.AWS.Pager
import Network.AWS.Prelude
import Network.AWS.Request
import Network.AWS.ResourceGroups.Types
import Network.AWS.ResourceGroups.Types.Product
import Network.AWS.Response
data SearchResources = SearchResources'
{ _srNextToken :: !(Maybe Text)
, _srMaxResults :: !(Maybe Nat)
, _srResourceQuery :: !ResourceQuery
} deriving (Eq, Read, Show, Data, Typeable, Generic)
searchResources
:: ResourceQuery
-> SearchResources
searchResources pResourceQuery_ =
SearchResources'
{ _srNextToken = Nothing
, _srMaxResults = Nothing
, _srResourceQuery = pResourceQuery_
}
srNextToken :: Lens' SearchResources (Maybe Text)
srNextToken = lens _srNextToken (\ s a -> s{_srNextToken = a})
srMaxResults :: Lens' SearchResources (Maybe Natural)
srMaxResults = lens _srMaxResults (\ s a -> s{_srMaxResults = a}) . mapping _Nat
srResourceQuery :: Lens' SearchResources ResourceQuery
srResourceQuery = lens _srResourceQuery (\ s a -> s{_srResourceQuery = a})
instance AWSPager SearchResources where
page rq rs
| stop (rs ^. srrsNextToken) = Nothing
| stop (rs ^. srrsResourceIdentifiers) = Nothing
| otherwise =
Just $ rq & srNextToken .~ rs ^. srrsNextToken
instance AWSRequest SearchResources where
type Rs SearchResources = SearchResourcesResponse
request = postJSON resourceGroups
response
= receiveJSON
(\ s h x ->
SearchResourcesResponse' <$>
(x .?> "NextToken") <*>
(x .?> "ResourceIdentifiers" .!@ mempty)
<*> (pure (fromEnum s)))
instance Hashable SearchResources where
instance NFData SearchResources where
instance ToHeaders SearchResources where
toHeaders = const mempty
instance ToJSON SearchResources where
toJSON SearchResources'{..}
= object
(catMaybes
[("NextToken" .=) <$> _srNextToken,
("MaxResults" .=) <$> _srMaxResults,
Just ("ResourceQuery" .= _srResourceQuery)])
instance ToPath SearchResources where
toPath = const "/resources/search"
instance ToQuery SearchResources where
toQuery = const mempty
data SearchResourcesResponse = SearchResourcesResponse'
{ _srrsNextToken :: !(Maybe Text)
, _srrsResourceIdentifiers :: !(Maybe [ResourceIdentifier])
, _srrsResponseStatus :: !Int
} deriving (Eq, Read, Show, Data, Typeable, Generic)
searchResourcesResponse
:: Int
-> SearchResourcesResponse
searchResourcesResponse pResponseStatus_ =
SearchResourcesResponse'
{ _srrsNextToken = Nothing
, _srrsResourceIdentifiers = Nothing
, _srrsResponseStatus = pResponseStatus_
}
srrsNextToken :: Lens' SearchResourcesResponse (Maybe Text)
srrsNextToken = lens _srrsNextToken (\ s a -> s{_srrsNextToken = a})
srrsResourceIdentifiers :: Lens' SearchResourcesResponse [ResourceIdentifier]
srrsResourceIdentifiers = lens _srrsResourceIdentifiers (\ s a -> s{_srrsResourceIdentifiers = a}) . _Default . _Coerce
srrsResponseStatus :: Lens' SearchResourcesResponse Int
srrsResponseStatus = lens _srrsResponseStatus (\ s a -> s{_srrsResponseStatus = a})
instance NFData SearchResourcesResponse where