func()

in internal/aws/client.go [160:193]


func (c *client) IsUserInGroup(u *User, g *Group) (bool, error) {
	if g == nil {
		return false, ErrGroupNotSpecified
	}

	if u == nil {
		return false, ErrUserNotSpecified
	}

	startURL, err := url.Parse(c.endpointURL.String())
	if err != nil {
		return false, err
	}

	filter := fmt.Sprintf("id eq \"%s\" and members eq \"%s\"", g.ID, u.ID)

	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 false, err
	}

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

	return r.TotalResults > 0, nil
}