{-# 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.SearchUsers
(
searchUsers
, SearchUsers
, suFilters
, suSortCriteria
, suNextToken
, suMaxResults
, searchUsersResponse
, SearchUsersResponse
, sursUsers
, sursNextToken
, sursTotalCount
, sursResponseStatus
) 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 SearchUsers = SearchUsers'
{ _suFilters :: !(Maybe [Filter])
, _suSortCriteria :: !(Maybe [Sort])
, _suNextToken :: !(Maybe Text)
, _suMaxResults :: !(Maybe Nat)
} deriving (Eq, Read, Show, Data, Typeable, Generic)
searchUsers
:: SearchUsers
searchUsers =
SearchUsers'
{ _suFilters = Nothing
, _suSortCriteria = Nothing
, _suNextToken = Nothing
, _suMaxResults = Nothing
}
suFilters :: Lens' SearchUsers [Filter]
suFilters = lens _suFilters (\ s a -> s{_suFilters = a}) . _Default . _Coerce
suSortCriteria :: Lens' SearchUsers [Sort]
suSortCriteria = lens _suSortCriteria (\ s a -> s{_suSortCriteria = a}) . _Default . _Coerce
suNextToken :: Lens' SearchUsers (Maybe Text)
suNextToken = lens _suNextToken (\ s a -> s{_suNextToken = a})
suMaxResults :: Lens' SearchUsers (Maybe Natural)
suMaxResults = lens _suMaxResults (\ s a -> s{_suMaxResults = a}) . mapping _Nat
instance AWSPager SearchUsers where
page rq rs
| stop (rs ^. sursNextToken) = Nothing
| stop (rs ^. sursUsers) = Nothing
| otherwise =
Just $ rq & suNextToken .~ rs ^. sursNextToken
instance AWSRequest SearchUsers where
type Rs SearchUsers = SearchUsersResponse
request = postJSON alexaBusiness
response
= receiveJSON
(\ s h x ->
SearchUsersResponse' <$>
(x .?> "Users" .!@ mempty) <*> (x .?> "NextToken")
<*> (x .?> "TotalCount")
<*> (pure (fromEnum s)))
instance Hashable SearchUsers where
instance NFData SearchUsers where
instance ToHeaders SearchUsers where
toHeaders
= const
(mconcat
["X-Amz-Target" =#
("AlexaForBusiness.SearchUsers" :: ByteString),
"Content-Type" =#
("application/x-amz-json-1.1" :: ByteString)])
instance ToJSON SearchUsers where
toJSON SearchUsers'{..}
= object
(catMaybes
[("Filters" .=) <$> _suFilters,
("SortCriteria" .=) <$> _suSortCriteria,
("NextToken" .=) <$> _suNextToken,
("MaxResults" .=) <$> _suMaxResults])
instance ToPath SearchUsers where
toPath = const "/"
instance ToQuery SearchUsers where
toQuery = const mempty
data SearchUsersResponse = SearchUsersResponse'
{ _sursUsers :: !(Maybe [UserData])
, _sursNextToken :: !(Maybe Text)
, _sursTotalCount :: !(Maybe Int)
, _sursResponseStatus :: !Int
} deriving (Eq, Read, Show, Data, Typeable, Generic)
searchUsersResponse
:: Int
-> SearchUsersResponse
searchUsersResponse pResponseStatus_ =
SearchUsersResponse'
{ _sursUsers = Nothing
, _sursNextToken = Nothing
, _sursTotalCount = Nothing
, _sursResponseStatus = pResponseStatus_
}
sursUsers :: Lens' SearchUsersResponse [UserData]
sursUsers = lens _sursUsers (\ s a -> s{_sursUsers = a}) . _Default . _Coerce
sursNextToken :: Lens' SearchUsersResponse (Maybe Text)
sursNextToken = lens _sursNextToken (\ s a -> s{_sursNextToken = a})
sursTotalCount :: Lens' SearchUsersResponse (Maybe Int)
sursTotalCount = lens _sursTotalCount (\ s a -> s{_sursTotalCount = a})
sursResponseStatus :: Lens' SearchUsersResponse Int
sursResponseStatus = lens _sursResponseStatus (\ s a -> s{_sursResponseStatus = a})
instance NFData SearchUsersResponse where