module Network.AWS.IAM.ListGroupsForUser
(
ListGroupsForUser
, listGroupsForUser
, lgfuMarker
, lgfuMaxItems
, lgfuUserName
, ListGroupsForUserResponse
, listGroupsForUserResponse
, lgfurGroups
, lgfurIsTruncated
, lgfurMarker
) where
import Network.AWS.Prelude
import Network.AWS.Request.Query
import Network.AWS.IAM.Types
import qualified GHC.Exts
data ListGroupsForUser = ListGroupsForUser
{ _lgfuMarker :: Maybe Text
, _lgfuMaxItems :: Maybe Nat
, _lgfuUserName :: Text
} deriving (Eq, Ord, Show)
listGroupsForUser :: Text
-> ListGroupsForUser
listGroupsForUser p1 = ListGroupsForUser
{ _lgfuUserName = p1
, _lgfuMarker = Nothing
, _lgfuMaxItems = Nothing
}
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 })
data ListGroupsForUserResponse = ListGroupsForUserResponse
{ _lgfurGroups :: List "Groups" Group
, _lgfurIsTruncated :: Maybe Bool
, _lgfurMarker :: Maybe Text
} deriving (Eq, Show)
listGroupsForUserResponse :: ListGroupsForUserResponse
listGroupsForUserResponse = ListGroupsForUserResponse
{ _lgfurGroups = mempty
, _lgfurIsTruncated = Nothing
, _lgfurMarker = Nothing
}
lgfurGroups :: Lens' ListGroupsForUserResponse [Group]
lgfurGroups = lens _lgfurGroups (\s a -> s { _lgfurGroups = a }) . _List
lgfurIsTruncated :: Lens' ListGroupsForUserResponse (Maybe Bool)
lgfurIsTruncated = lens _lgfurIsTruncated (\s a -> s { _lgfurIsTruncated = a })
lgfurMarker :: Lens' ListGroupsForUserResponse (Maybe Text)
lgfurMarker = lens _lgfurMarker (\s a -> s { _lgfurMarker = a })
instance ToPath ListGroupsForUser where
toPath = const "/"
instance ToQuery ListGroupsForUser where
toQuery ListGroupsForUser{..} = mconcat
[ "Marker" =? _lgfuMarker
, "MaxItems" =? _lgfuMaxItems
, "UserName" =? _lgfuUserName
]
instance ToHeaders ListGroupsForUser
instance AWSRequest ListGroupsForUser where
type Sv ListGroupsForUser = IAM
type Rs ListGroupsForUser = ListGroupsForUserResponse
request = post "ListGroupsForUser"
response = xmlResponse
instance FromXML ListGroupsForUserResponse where
parseXML = withElement "ListGroupsForUserResult" $ \x -> ListGroupsForUserResponse
<$> x .@ "Groups"
<*> x .@? "IsTruncated"
<*> x .@? "Marker"
instance AWSPager ListGroupsForUser where
page rq rs
| stop (rs ^. lgfurIsTruncated) = Nothing
| otherwise = Just $ rq
& lgfuMarker .~ rs ^. lgfurMarker