{-# 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.SearchProductsAsAdmin
(
searchProductsAsAdmin
, SearchProductsAsAdmin
, spaaPortfolioId
, spaaFilters
, spaaSortOrder
, spaaAcceptLanguage
, spaaPageToken
, spaaPageSize
, spaaProductSource
, spaaSortBy
, searchProductsAsAdminResponse
, SearchProductsAsAdminResponse
, spaarsNextPageToken
, spaarsProductViewDetails
, spaarsResponseStatus
) 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 SearchProductsAsAdmin = SearchProductsAsAdmin'
{ _spaaPortfolioId :: !(Maybe Text)
, _spaaFilters :: !(Maybe (Map ProductViewFilterBy [Text]))
, _spaaSortOrder :: !(Maybe SortOrder)
, _spaaAcceptLanguage :: !(Maybe Text)
, _spaaPageToken :: !(Maybe Text)
, _spaaPageSize :: !(Maybe Nat)
, _spaaProductSource :: !(Maybe ProductSource)
, _spaaSortBy :: !(Maybe ProductViewSortBy)
} deriving (Eq, Read, Show, Data, Typeable, Generic)
searchProductsAsAdmin
:: SearchProductsAsAdmin
searchProductsAsAdmin =
SearchProductsAsAdmin'
{ _spaaPortfolioId = Nothing
, _spaaFilters = Nothing
, _spaaSortOrder = Nothing
, _spaaAcceptLanguage = Nothing
, _spaaPageToken = Nothing
, _spaaPageSize = Nothing
, _spaaProductSource = Nothing
, _spaaSortBy = Nothing
}
spaaPortfolioId :: Lens' SearchProductsAsAdmin (Maybe Text)
spaaPortfolioId = lens _spaaPortfolioId (\ s a -> s{_spaaPortfolioId = a})
spaaFilters :: Lens' SearchProductsAsAdmin (HashMap ProductViewFilterBy [Text])
spaaFilters = lens _spaaFilters (\ s a -> s{_spaaFilters = a}) . _Default . _Map
spaaSortOrder :: Lens' SearchProductsAsAdmin (Maybe SortOrder)
spaaSortOrder = lens _spaaSortOrder (\ s a -> s{_spaaSortOrder = a})
spaaAcceptLanguage :: Lens' SearchProductsAsAdmin (Maybe Text)
spaaAcceptLanguage = lens _spaaAcceptLanguage (\ s a -> s{_spaaAcceptLanguage = a})
spaaPageToken :: Lens' SearchProductsAsAdmin (Maybe Text)
spaaPageToken = lens _spaaPageToken (\ s a -> s{_spaaPageToken = a})
spaaPageSize :: Lens' SearchProductsAsAdmin (Maybe Natural)
spaaPageSize = lens _spaaPageSize (\ s a -> s{_spaaPageSize = a}) . mapping _Nat
spaaProductSource :: Lens' SearchProductsAsAdmin (Maybe ProductSource)
spaaProductSource = lens _spaaProductSource (\ s a -> s{_spaaProductSource = a})
spaaSortBy :: Lens' SearchProductsAsAdmin (Maybe ProductViewSortBy)
spaaSortBy = lens _spaaSortBy (\ s a -> s{_spaaSortBy = a})
instance AWSPager SearchProductsAsAdmin where
page rq rs
| stop (rs ^. spaarsNextPageToken) = Nothing
| stop (rs ^. spaarsProductViewDetails) = Nothing
| otherwise =
Just $ rq &
spaaPageToken .~ rs ^. spaarsNextPageToken
instance AWSRequest SearchProductsAsAdmin where
type Rs SearchProductsAsAdmin =
SearchProductsAsAdminResponse
request = postJSON serviceCatalog
response
= receiveJSON
(\ s h x ->
SearchProductsAsAdminResponse' <$>
(x .?> "NextPageToken") <*>
(x .?> "ProductViewDetails" .!@ mempty)
<*> (pure (fromEnum s)))
instance Hashable SearchProductsAsAdmin where
instance NFData SearchProductsAsAdmin where
instance ToHeaders SearchProductsAsAdmin where
toHeaders
= const
(mconcat
["X-Amz-Target" =#
("AWS242ServiceCatalogService.SearchProductsAsAdmin"
:: ByteString),
"Content-Type" =#
("application/x-amz-json-1.1" :: ByteString)])
instance ToJSON SearchProductsAsAdmin where
toJSON SearchProductsAsAdmin'{..}
= object
(catMaybes
[("PortfolioId" .=) <$> _spaaPortfolioId,
("Filters" .=) <$> _spaaFilters,
("SortOrder" .=) <$> _spaaSortOrder,
("AcceptLanguage" .=) <$> _spaaAcceptLanguage,
("PageToken" .=) <$> _spaaPageToken,
("PageSize" .=) <$> _spaaPageSize,
("ProductSource" .=) <$> _spaaProductSource,
("SortBy" .=) <$> _spaaSortBy])
instance ToPath SearchProductsAsAdmin where
toPath = const "/"
instance ToQuery SearchProductsAsAdmin where
toQuery = const mempty
data SearchProductsAsAdminResponse = SearchProductsAsAdminResponse'
{ _spaarsNextPageToken :: !(Maybe Text)
, _spaarsProductViewDetails :: !(Maybe [ProductViewDetail])
, _spaarsResponseStatus :: !Int
} deriving (Eq, Read, Show, Data, Typeable, Generic)
searchProductsAsAdminResponse
:: Int
-> SearchProductsAsAdminResponse
searchProductsAsAdminResponse pResponseStatus_ =
SearchProductsAsAdminResponse'
{ _spaarsNextPageToken = Nothing
, _spaarsProductViewDetails = Nothing
, _spaarsResponseStatus = pResponseStatus_
}
spaarsNextPageToken :: Lens' SearchProductsAsAdminResponse (Maybe Text)
spaarsNextPageToken = lens _spaarsNextPageToken (\ s a -> s{_spaarsNextPageToken = a})
spaarsProductViewDetails :: Lens' SearchProductsAsAdminResponse [ProductViewDetail]
spaarsProductViewDetails = lens _spaarsProductViewDetails (\ s a -> s{_spaarsProductViewDetails = a}) . _Default . _Coerce
spaarsResponseStatus :: Lens' SearchProductsAsAdminResponse Int
spaarsResponseStatus = lens _spaarsResponseStatus (\ s a -> s{_spaarsResponseStatus = a})
instance NFData SearchProductsAsAdminResponse where