{-# 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.SearchContacts
(
searchContacts
, SearchContacts
, scFilters
, scSortCriteria
, scNextToken
, scMaxResults
, searchContactsResponse
, SearchContactsResponse
, scrsNextToken
, scrsContacts
, scrsTotalCount
, scrsResponseStatus
) where
import Network.AWS.AlexaBusiness.Types
import Network.AWS.AlexaBusiness.Types.Product
import Network.AWS.Lens
import Network.AWS.Prelude
import Network.AWS.Request
import Network.AWS.Response
data SearchContacts = SearchContacts'
{ _scFilters :: !(Maybe [Filter])
, _scSortCriteria :: !(Maybe [Sort])
, _scNextToken :: !(Maybe Text)
, _scMaxResults :: !(Maybe Nat)
} deriving (Eq, Read, Show, Data, Typeable, Generic)
searchContacts
:: SearchContacts
searchContacts =
SearchContacts'
{ _scFilters = Nothing
, _scSortCriteria = Nothing
, _scNextToken = Nothing
, _scMaxResults = Nothing
}
scFilters :: Lens' SearchContacts [Filter]
scFilters = lens _scFilters (\ s a -> s{_scFilters = a}) . _Default . _Coerce
scSortCriteria :: Lens' SearchContacts [Sort]
scSortCriteria = lens _scSortCriteria (\ s a -> s{_scSortCriteria = a}) . _Default . _Coerce
scNextToken :: Lens' SearchContacts (Maybe Text)
scNextToken = lens _scNextToken (\ s a -> s{_scNextToken = a})
scMaxResults :: Lens' SearchContacts (Maybe Natural)
scMaxResults = lens _scMaxResults (\ s a -> s{_scMaxResults = a}) . mapping _Nat
instance AWSRequest SearchContacts where
type Rs SearchContacts = SearchContactsResponse
request = postJSON alexaBusiness
response
= receiveJSON
(\ s h x ->
SearchContactsResponse' <$>
(x .?> "NextToken") <*> (x .?> "Contacts" .!@ mempty)
<*> (x .?> "TotalCount")
<*> (pure (fromEnum s)))
instance Hashable SearchContacts where
instance NFData SearchContacts where
instance ToHeaders SearchContacts where
toHeaders
= const
(mconcat
["X-Amz-Target" =#
("AlexaForBusiness.SearchContacts" :: ByteString),
"Content-Type" =#
("application/x-amz-json-1.1" :: ByteString)])
instance ToJSON SearchContacts where
toJSON SearchContacts'{..}
= object
(catMaybes
[("Filters" .=) <$> _scFilters,
("SortCriteria" .=) <$> _scSortCriteria,
("NextToken" .=) <$> _scNextToken,
("MaxResults" .=) <$> _scMaxResults])
instance ToPath SearchContacts where
toPath = const "/"
instance ToQuery SearchContacts where
toQuery = const mempty
data SearchContactsResponse = SearchContactsResponse'
{ _scrsNextToken :: !(Maybe Text)
, _scrsContacts :: !(Maybe [ContactData])
, _scrsTotalCount :: !(Maybe Int)
, _scrsResponseStatus :: !Int
} deriving (Eq, Read, Show, Data, Typeable, Generic)
searchContactsResponse
:: Int
-> SearchContactsResponse
searchContactsResponse pResponseStatus_ =
SearchContactsResponse'
{ _scrsNextToken = Nothing
, _scrsContacts = Nothing
, _scrsTotalCount = Nothing
, _scrsResponseStatus = pResponseStatus_
}
scrsNextToken :: Lens' SearchContactsResponse (Maybe Text)
scrsNextToken = lens _scrsNextToken (\ s a -> s{_scrsNextToken = a})
scrsContacts :: Lens' SearchContactsResponse [ContactData]
scrsContacts = lens _scrsContacts (\ s a -> s{_scrsContacts = a}) . _Default . _Coerce
scrsTotalCount :: Lens' SearchContactsResponse (Maybe Int)
scrsTotalCount = lens _scrsTotalCount (\ s a -> s{_scrsTotalCount = a})
scrsResponseStatus :: Lens' SearchContactsResponse Int
scrsResponseStatus = lens _scrsResponseStatus (\ s a -> s{_scrsResponseStatus = a})
instance NFData SearchContactsResponse where