module Network.AWS.IAM.ListGroupsForUser
(
listGroupsForUser
, ListGroupsForUser
, lgfuMarker
, lgfuMaxItems
, lgfuUserName
, listGroupsForUserResponse
, ListGroupsForUserResponse
, lgfursMarker
, lgfursIsTruncated
, lgfursResponseStatus
, lgfursGroups
) where
import Network.AWS.IAM.Types
import Network.AWS.IAM.Types.Product
import Network.AWS.Lens
import Network.AWS.Pager
import Network.AWS.Prelude
import Network.AWS.Request
import Network.AWS.Response
data ListGroupsForUser = ListGroupsForUser'
{ _lgfuMarker :: !(Maybe Text)
, _lgfuMaxItems :: !(Maybe Nat)
, _lgfuUserName :: !Text
} deriving (Eq,Read,Show,Data,Typeable,Generic)
listGroupsForUser
:: Text
-> ListGroupsForUser
listGroupsForUser pUserName_ =
ListGroupsForUser'
{ _lgfuMarker = Nothing
, _lgfuMaxItems = Nothing
, _lgfuUserName = pUserName_
}
lgfuMarker :: Lens' ListGroupsForUser (Maybe Text)
lgfuMarker = lens _lgfuMarker (\ s a -> s{_lgfuMarker = a});
lgfuMaxItems :: Lens' ListGroupsForUser (Maybe Natural)
lgfuMaxItems = lens _lgfuMaxItems (\ s a -> s{_lgfuMaxItems = a}) . mapping _Nat;
lgfuUserName :: Lens' ListGroupsForUser Text
lgfuUserName = lens _lgfuUserName (\ s a -> s{_lgfuUserName = a});
instance AWSPager ListGroupsForUser where
page rq rs
| stop (rs ^. lgfursIsTruncated) = Nothing
| isNothing (rs ^. lgfursMarker) = Nothing
| otherwise =
Just $ rq & lgfuMarker .~ rs ^. lgfursMarker
instance AWSRequest ListGroupsForUser where
type Rs ListGroupsForUser = ListGroupsForUserResponse
request = postQuery iam
response
= receiveXMLWrapper "ListGroupsForUserResult"
(\ s h x ->
ListGroupsForUserResponse' <$>
(x .@? "Marker") <*> (x .@? "IsTruncated") <*>
(pure (fromEnum s))
<*>
(x .@? "Groups" .!@ mempty >>=
parseXMLList "member"))
instance Hashable ListGroupsForUser
instance NFData ListGroupsForUser
instance ToHeaders ListGroupsForUser where
toHeaders = const mempty
instance ToPath ListGroupsForUser where
toPath = const "/"
instance ToQuery ListGroupsForUser where
toQuery ListGroupsForUser'{..}
= mconcat
["Action" =: ("ListGroupsForUser" :: ByteString),
"Version" =: ("2010-05-08" :: ByteString),
"Marker" =: _lgfuMarker, "MaxItems" =: _lgfuMaxItems,
"UserName" =: _lgfuUserName]
data ListGroupsForUserResponse = ListGroupsForUserResponse'
{ _lgfursMarker :: !(Maybe Text)
, _lgfursIsTruncated :: !(Maybe Bool)
, _lgfursResponseStatus :: !Int
, _lgfursGroups :: ![Group]
} deriving (Eq,Read,Show,Data,Typeable,Generic)
listGroupsForUserResponse
:: Int
-> ListGroupsForUserResponse
listGroupsForUserResponse pResponseStatus_ =
ListGroupsForUserResponse'
{ _lgfursMarker = Nothing
, _lgfursIsTruncated = Nothing
, _lgfursResponseStatus = pResponseStatus_
, _lgfursGroups = mempty
}
lgfursMarker :: Lens' ListGroupsForUserResponse (Maybe Text)
lgfursMarker = lens _lgfursMarker (\ s a -> s{_lgfursMarker = a});
lgfursIsTruncated :: Lens' ListGroupsForUserResponse (Maybe Bool)
lgfursIsTruncated = lens _lgfursIsTruncated (\ s a -> s{_lgfursIsTruncated = a});
lgfursResponseStatus :: Lens' ListGroupsForUserResponse Int
lgfursResponseStatus = lens _lgfursResponseStatus (\ s a -> s{_lgfursResponseStatus = a});
lgfursGroups :: Lens' ListGroupsForUserResponse [Group]
lgfursGroups = lens _lgfursGroups (\ s a -> s{_lgfursGroups = a}) . _Coerce;
instance NFData ListGroupsForUserResponse