{-# 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.SearchProducts
(
searchProducts
, SearchProducts
, spFilters
, spSortOrder
, spAcceptLanguage
, spPageToken
, spPageSize
, spSortBy
, searchProductsResponse
, SearchProductsResponse
, sprsNextPageToken
, sprsProductViewAggregations
, sprsProductViewSummaries
, sprsResponseStatus
) where
import Network.AWS.Lens
import Network.AWS.Prelude
import Network.AWS.Request
import Network.AWS.Response
import Network.AWS.ServiceCatalog.Types
import Network.AWS.ServiceCatalog.Types.Product
data SearchProducts = SearchProducts'
{ _spFilters :: !(Maybe (Map ProductViewFilterBy [Text]))
, _spSortOrder :: !(Maybe SortOrder)
, _spAcceptLanguage :: !(Maybe Text)
, _spPageToken :: !(Maybe Text)
, _spPageSize :: !(Maybe Nat)
, _spSortBy :: !(Maybe ProductViewSortBy)
} deriving (Eq, Read, Show, Data, Typeable, Generic)
searchProducts
:: SearchProducts
searchProducts =
SearchProducts'
{ _spFilters = Nothing
, _spSortOrder = Nothing
, _spAcceptLanguage = Nothing
, _spPageToken = Nothing
, _spPageSize = Nothing
, _spSortBy = Nothing
}
spFilters :: Lens' SearchProducts (HashMap ProductViewFilterBy [Text])
spFilters = lens _spFilters (\ s a -> s{_spFilters = a}) . _Default . _Map
spSortOrder :: Lens' SearchProducts (Maybe SortOrder)
spSortOrder = lens _spSortOrder (\ s a -> s{_spSortOrder = a})
spAcceptLanguage :: Lens' SearchProducts (Maybe Text)
spAcceptLanguage = lens _spAcceptLanguage (\ s a -> s{_spAcceptLanguage = a})
spPageToken :: Lens' SearchProducts (Maybe Text)
spPageToken = lens _spPageToken (\ s a -> s{_spPageToken = a})
spPageSize :: Lens' SearchProducts (Maybe Natural)
spPageSize = lens _spPageSize (\ s a -> s{_spPageSize = a}) . mapping _Nat
spSortBy :: Lens' SearchProducts (Maybe ProductViewSortBy)
spSortBy = lens _spSortBy (\ s a -> s{_spSortBy = a})
instance AWSRequest SearchProducts where
type Rs SearchProducts = SearchProductsResponse
request = postJSON serviceCatalog
response
= receiveJSON
(\ s h x ->
SearchProductsResponse' <$>
(x .?> "NextPageToken") <*>
(x .?> "ProductViewAggregations" .!@ mempty)
<*> (x .?> "ProductViewSummaries" .!@ mempty)
<*> (pure (fromEnum s)))
instance Hashable SearchProducts where
instance NFData SearchProducts where
instance ToHeaders SearchProducts where
toHeaders
= const
(mconcat
["X-Amz-Target" =#
("AWS242ServiceCatalogService.SearchProducts" ::
ByteString),
"Content-Type" =#
("application/x-amz-json-1.1" :: ByteString)])
instance ToJSON SearchProducts where
toJSON SearchProducts'{..}
= object
(catMaybes
[("Filters" .=) <$> _spFilters,
("SortOrder" .=) <$> _spSortOrder,
("AcceptLanguage" .=) <$> _spAcceptLanguage,
("PageToken" .=) <$> _spPageToken,
("PageSize" .=) <$> _spPageSize,
("SortBy" .=) <$> _spSortBy])
instance ToPath SearchProducts where
toPath = const "/"
instance ToQuery SearchProducts where
toQuery = const mempty
data SearchProductsResponse = SearchProductsResponse'
{ _sprsNextPageToken :: !(Maybe Text)
, _sprsProductViewAggregations :: !(Maybe (Map Text [ProductViewAggregationValue]))
, _sprsProductViewSummaries :: !(Maybe [ProductViewSummary])
, _sprsResponseStatus :: !Int
} deriving (Eq, Read, Show, Data, Typeable, Generic)
searchProductsResponse
:: Int
-> SearchProductsResponse
searchProductsResponse pResponseStatus_ =
SearchProductsResponse'
{ _sprsNextPageToken = Nothing
, _sprsProductViewAggregations = Nothing
, _sprsProductViewSummaries = Nothing
, _sprsResponseStatus = pResponseStatus_
}
sprsNextPageToken :: Lens' SearchProductsResponse (Maybe Text)
sprsNextPageToken = lens _sprsNextPageToken (\ s a -> s{_sprsNextPageToken = a})
sprsProductViewAggregations :: Lens' SearchProductsResponse (HashMap Text [ProductViewAggregationValue])
sprsProductViewAggregations = lens _sprsProductViewAggregations (\ s a -> s{_sprsProductViewAggregations = a}) . _Default . _Map
sprsProductViewSummaries :: Lens' SearchProductsResponse [ProductViewSummary]
sprsProductViewSummaries = lens _sprsProductViewSummaries (\ s a -> s{_sprsProductViewSummaries = a}) . _Default . _Coerce
sprsResponseStatus :: Lens' SearchProductsResponse Int
sprsResponseStatus = lens _sprsResponseStatus (\ s a -> s{_sprsResponseStatus = a})
instance NFData SearchProductsResponse where