{-# 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.GuardDuty.ListMembers
(
listMembers
, ListMembers
, lmOnlyAssociated
, lmNextToken
, lmMaxResults
, lmDetectorId
, listMembersResponse
, ListMembersResponse
, lmrsMembers
, lmrsNextToken
, lmrsResponseStatus
) where
import Network.AWS.GuardDuty.Types
import Network.AWS.GuardDuty.Types.Product
import Network.AWS.Lens
import Network.AWS.Pager
import Network.AWS.Prelude
import Network.AWS.Request
import Network.AWS.Response
data ListMembers = ListMembers'
{ _lmOnlyAssociated :: !(Maybe Text)
, _lmNextToken :: !(Maybe Text)
, _lmMaxResults :: !(Maybe Nat)
, _lmDetectorId :: !Text
} deriving (Eq, Read, Show, Data, Typeable, Generic)
listMembers
:: Text
-> ListMembers
listMembers pDetectorId_ =
ListMembers'
{ _lmOnlyAssociated = Nothing
, _lmNextToken = Nothing
, _lmMaxResults = Nothing
, _lmDetectorId = pDetectorId_
}
lmOnlyAssociated :: Lens' ListMembers (Maybe Text)
lmOnlyAssociated = lens _lmOnlyAssociated (\ s a -> s{_lmOnlyAssociated = a})
lmNextToken :: Lens' ListMembers (Maybe Text)
lmNextToken = lens _lmNextToken (\ s a -> s{_lmNextToken = a})
lmMaxResults :: Lens' ListMembers (Maybe Natural)
lmMaxResults = lens _lmMaxResults (\ s a -> s{_lmMaxResults = a}) . mapping _Nat
lmDetectorId :: Lens' ListMembers Text
lmDetectorId = lens _lmDetectorId (\ s a -> s{_lmDetectorId = a})
instance AWSPager ListMembers where
page rq rs
| stop (rs ^. lmrsNextToken) = Nothing
| stop (rs ^. lmrsMembers) = Nothing
| otherwise =
Just $ rq & lmNextToken .~ rs ^. lmrsNextToken
instance AWSRequest ListMembers where
type Rs ListMembers = ListMembersResponse
request = get guardDuty
response
= receiveJSON
(\ s h x ->
ListMembersResponse' <$>
(x .?> "members" .!@ mempty) <*> (x .?> "nextToken")
<*> (pure (fromEnum s)))
instance Hashable ListMembers where
instance NFData ListMembers where
instance ToHeaders ListMembers where
toHeaders
= const
(mconcat
["Content-Type" =#
("application/x-amz-json-1.1" :: ByteString)])
instance ToPath ListMembers where
toPath ListMembers'{..}
= mconcat
["/detector/", toBS _lmDetectorId, "/member"]
instance ToQuery ListMembers where
toQuery ListMembers'{..}
= mconcat
["onlyAssociated" =: _lmOnlyAssociated,
"nextToken" =: _lmNextToken,
"maxResults" =: _lmMaxResults]
data ListMembersResponse = ListMembersResponse'
{ _lmrsMembers :: !(Maybe [Member])
, _lmrsNextToken :: !(Maybe Text)
, _lmrsResponseStatus :: !Int
} deriving (Eq, Read, Show, Data, Typeable, Generic)
listMembersResponse
:: Int
-> ListMembersResponse
listMembersResponse pResponseStatus_ =
ListMembersResponse'
{ _lmrsMembers = Nothing
, _lmrsNextToken = Nothing
, _lmrsResponseStatus = pResponseStatus_
}
lmrsMembers :: Lens' ListMembersResponse [Member]
lmrsMembers = lens _lmrsMembers (\ s a -> s{_lmrsMembers = a}) . _Default . _Coerce
lmrsNextToken :: Lens' ListMembersResponse (Maybe Text)
lmrsNextToken = lens _lmrsNextToken (\ s a -> s{_lmrsNextToken = a})
lmrsResponseStatus :: Lens' ListMembersResponse Int
lmrsResponseStatus = lens _lmrsResponseStatus (\ s a -> s{_lmrsResponseStatus = a})
instance NFData ListMembersResponse where