func()

in internal/aws/client.go [496:538]


func (c *client) GetGroupMembers(g *Group) ([]*User, error) {
	startURL, err := url.Parse(c.endpointURL.String())
	if err != nil {
		return nil, err
	}

	if g == nil {
		return nil, ErrGroupNotSpecified
	}

	filter := fmt.Sprintf("displayName eq \"%s\"", g.DisplayName)

	startURL.Path = path.Join(startURL.Path, "/Groups")
	q := startURL.Query()
	q.Add("filter", filter)

	startURL.RawQuery = q.Encode()

	resp, err := c.sendRequest(http.MethodGet, startURL.String())
	if err != nil {
		return nil, err
	}

	var r GroupFilterResults
	err = json.Unmarshal(resp, &r)
	if err != nil {
		return nil, err
	}

	var users = make([]*User, 0)
	for _, res := range r.Resources {
		for _, uID := range res.Members { // NOTE: Not Implemented Yet https://docs.aws.amazon.com/singlesignon/latest/developerguide/listgroups.html

			user, err := c.FindUserByID(uID)
			if err != nil {
				return nil, err
			}
			users = append(users, user)
		}
	}

	return users, nil
}