{-# 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.SearchAddressBooks
(
searchAddressBooks
, SearchAddressBooks
, sabFilters
, sabSortCriteria
, sabNextToken
, sabMaxResults
, searchAddressBooksResponse
, SearchAddressBooksResponse
, sabrsNextToken
, sabrsAddressBooks
, sabrsTotalCount
, sabrsResponseStatus
) 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 SearchAddressBooks = SearchAddressBooks'
{ _sabFilters :: !(Maybe [Filter])
, _sabSortCriteria :: !(Maybe [Sort])
, _sabNextToken :: !(Maybe Text)
, _sabMaxResults :: !(Maybe Nat)
} deriving (Eq, Read, Show, Data, Typeable, Generic)
searchAddressBooks
:: SearchAddressBooks
searchAddressBooks =
SearchAddressBooks'
{ _sabFilters = Nothing
, _sabSortCriteria = Nothing
, _sabNextToken = Nothing
, _sabMaxResults = Nothing
}
sabFilters :: Lens' SearchAddressBooks [Filter]
sabFilters = lens _sabFilters (\ s a -> s{_sabFilters = a}) . _Default . _Coerce
sabSortCriteria :: Lens' SearchAddressBooks [Sort]
sabSortCriteria = lens _sabSortCriteria (\ s a -> s{_sabSortCriteria = a}) . _Default . _Coerce
sabNextToken :: Lens' SearchAddressBooks (Maybe Text)
sabNextToken = lens _sabNextToken (\ s a -> s{_sabNextToken = a})
sabMaxResults :: Lens' SearchAddressBooks (Maybe Natural)
sabMaxResults = lens _sabMaxResults (\ s a -> s{_sabMaxResults = a}) . mapping _Nat
instance AWSRequest SearchAddressBooks where
type Rs SearchAddressBooks =
SearchAddressBooksResponse
request = postJSON alexaBusiness
response
= receiveJSON
(\ s h x ->
SearchAddressBooksResponse' <$>
(x .?> "NextToken") <*>
(x .?> "AddressBooks" .!@ mempty)
<*> (x .?> "TotalCount")
<*> (pure (fromEnum s)))
instance Hashable SearchAddressBooks where
instance NFData SearchAddressBooks where
instance ToHeaders SearchAddressBooks where
toHeaders
= const
(mconcat
["X-Amz-Target" =#
("AlexaForBusiness.SearchAddressBooks" ::
ByteString),
"Content-Type" =#
("application/x-amz-json-1.1" :: ByteString)])
instance ToJSON SearchAddressBooks where
toJSON SearchAddressBooks'{..}
= object
(catMaybes
[("Filters" .=) <$> _sabFilters,
("SortCriteria" .=) <$> _sabSortCriteria,
("NextToken" .=) <$> _sabNextToken,
("MaxResults" .=) <$> _sabMaxResults])
instance ToPath SearchAddressBooks where
toPath = const "/"
instance ToQuery SearchAddressBooks where
toQuery = const mempty
data SearchAddressBooksResponse = SearchAddressBooksResponse'
{ _sabrsNextToken :: !(Maybe Text)
, _sabrsAddressBooks :: !(Maybe [AddressBookData])
, _sabrsTotalCount :: !(Maybe Int)
, _sabrsResponseStatus :: !Int
} deriving (Eq, Read, Show, Data, Typeable, Generic)
searchAddressBooksResponse
:: Int
-> SearchAddressBooksResponse
searchAddressBooksResponse pResponseStatus_ =
SearchAddressBooksResponse'
{ _sabrsNextToken = Nothing
, _sabrsAddressBooks = Nothing
, _sabrsTotalCount = Nothing
, _sabrsResponseStatus = pResponseStatus_
}
sabrsNextToken :: Lens' SearchAddressBooksResponse (Maybe Text)
sabrsNextToken = lens _sabrsNextToken (\ s a -> s{_sabrsNextToken = a})
sabrsAddressBooks :: Lens' SearchAddressBooksResponse [AddressBookData]
sabrsAddressBooks = lens _sabrsAddressBooks (\ s a -> s{_sabrsAddressBooks = a}) . _Default . _Coerce
sabrsTotalCount :: Lens' SearchAddressBooksResponse (Maybe Int)
sabrsTotalCount = lens _sabrsTotalCount (\ s a -> s{_sabrsTotalCount = a})
sabrsResponseStatus :: Lens' SearchAddressBooksResponse Int
sabrsResponseStatus = lens _sabrsResponseStatus (\ s a -> s{_sabrsResponseStatus = a})
instance NFData SearchAddressBooksResponse where