{-# 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.AlexaBusiness.SearchSkillGroups
(
searchSkillGroups
, SearchSkillGroups
, ssgFilters
, ssgSortCriteria
, ssgNextToken
, ssgMaxResults
, searchSkillGroupsResponse
, SearchSkillGroupsResponse
, ssgrsNextToken
, ssgrsSkillGroups
, ssgrsTotalCount
, ssgrsResponseStatus
) where
import Network.AWS.AlexaBusiness.Types
import Network.AWS.AlexaBusiness.Types.Product
import Network.AWS.Lens
import Network.AWS.Pager
import Network.AWS.Prelude
import Network.AWS.Request
import Network.AWS.Response
data SearchSkillGroups = SearchSkillGroups'
{ _ssgFilters :: !(Maybe [Filter])
, _ssgSortCriteria :: !(Maybe [Sort])
, _ssgNextToken :: !(Maybe Text)
, _ssgMaxResults :: !(Maybe Nat)
} deriving (Eq, Read, Show, Data, Typeable, Generic)
searchSkillGroups
:: SearchSkillGroups
searchSkillGroups =
SearchSkillGroups'
{ _ssgFilters = Nothing
, _ssgSortCriteria = Nothing
, _ssgNextToken = Nothing
, _ssgMaxResults = Nothing
}
ssgFilters :: Lens' SearchSkillGroups [Filter]
ssgFilters = lens _ssgFilters (\ s a -> s{_ssgFilters = a}) . _Default . _Coerce
ssgSortCriteria :: Lens' SearchSkillGroups [Sort]
ssgSortCriteria = lens _ssgSortCriteria (\ s a -> s{_ssgSortCriteria = a}) . _Default . _Coerce
ssgNextToken :: Lens' SearchSkillGroups (Maybe Text)
ssgNextToken = lens _ssgNextToken (\ s a -> s{_ssgNextToken = a})
ssgMaxResults :: Lens' SearchSkillGroups (Maybe Natural)
ssgMaxResults = lens _ssgMaxResults (\ s a -> s{_ssgMaxResults = a}) . mapping _Nat
instance AWSPager SearchSkillGroups where
page rq rs
| stop (rs ^. ssgrsNextToken) = Nothing
| stop (rs ^. ssgrsSkillGroups) = Nothing
| otherwise =
Just $ rq & ssgNextToken .~ rs ^. ssgrsNextToken
instance AWSRequest SearchSkillGroups where
type Rs SearchSkillGroups = SearchSkillGroupsResponse
request = postJSON alexaBusiness
response
= receiveJSON
(\ s h x ->
SearchSkillGroupsResponse' <$>
(x .?> "NextToken") <*>
(x .?> "SkillGroups" .!@ mempty)
<*> (x .?> "TotalCount")
<*> (pure (fromEnum s)))
instance Hashable SearchSkillGroups where
instance NFData SearchSkillGroups where
instance ToHeaders SearchSkillGroups where
toHeaders
= const
(mconcat
["X-Amz-Target" =#
("AlexaForBusiness.SearchSkillGroups" :: ByteString),
"Content-Type" =#
("application/x-amz-json-1.1" :: ByteString)])
instance ToJSON SearchSkillGroups where
toJSON SearchSkillGroups'{..}
= object
(catMaybes
[("Filters" .=) <$> _ssgFilters,
("SortCriteria" .=) <$> _ssgSortCriteria,
("NextToken" .=) <$> _ssgNextToken,
("MaxResults" .=) <$> _ssgMaxResults])
instance ToPath SearchSkillGroups where
toPath = const "/"
instance ToQuery SearchSkillGroups where
toQuery = const mempty
data SearchSkillGroupsResponse = SearchSkillGroupsResponse'
{ _ssgrsNextToken :: !(Maybe Text)
, _ssgrsSkillGroups :: !(Maybe [SkillGroupData])
, _ssgrsTotalCount :: !(Maybe Int)
, _ssgrsResponseStatus :: !Int
} deriving (Eq, Read, Show, Data, Typeable, Generic)
searchSkillGroupsResponse
:: Int
-> SearchSkillGroupsResponse
searchSkillGroupsResponse pResponseStatus_ =
SearchSkillGroupsResponse'
{ _ssgrsNextToken = Nothing
, _ssgrsSkillGroups = Nothing
, _ssgrsTotalCount = Nothing
, _ssgrsResponseStatus = pResponseStatus_
}
ssgrsNextToken :: Lens' SearchSkillGroupsResponse (Maybe Text)
ssgrsNextToken = lens _ssgrsNextToken (\ s a -> s{_ssgrsNextToken = a})
ssgrsSkillGroups :: Lens' SearchSkillGroupsResponse [SkillGroupData]
ssgrsSkillGroups = lens _ssgrsSkillGroups (\ s a -> s{_ssgrsSkillGroups = a}) . _Default . _Coerce
ssgrsTotalCount :: Lens' SearchSkillGroupsResponse (Maybe Int)
ssgrsTotalCount = lens _ssgrsTotalCount (\ s a -> s{_ssgrsTotalCount = a})
ssgrsResponseStatus :: Lens' SearchSkillGroupsResponse Int
ssgrsResponseStatus = lens _ssgrsResponseStatus (\ s a -> s{_ssgrsResponseStatus = a})
instance NFData SearchSkillGroupsResponse where