-
Notifications
You must be signed in to change notification settings - Fork 63
Expand file tree
/
Copy pathmethod_checkmembergroups.go
More file actions
143 lines (119 loc) · 3.9 KB
/
method_checkmembergroups.go
File metadata and controls
143 lines (119 loc) · 3.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
package administrativeunit
import (
"context"
"fmt"
"net/http"
"github.com/hashicorp/go-azure-sdk/microsoft-graph/common-types/beta"
"github.com/hashicorp/go-azure-sdk/sdk/client"
"github.com/hashicorp/go-azure-sdk/sdk/odata"
)
// Copyright IBM Corp. 2021, 2025 All rights reserved.
// Licensed under the MIT License. See NOTICE.txt in the project root for license information.
type CheckMemberGroupsOperationResponse struct {
HttpResponse *http.Response
OData *odata.OData
Model *[]string
}
type CheckMemberGroupsCompleteResult struct {
LatestHttpResponse *http.Response
Items []string
}
type CheckMemberGroupsOperationOptions struct {
Metadata *odata.Metadata
RetryFunc client.RequestRetryFunc
Skip *int64
Top *int64
}
func DefaultCheckMemberGroupsOperationOptions() CheckMemberGroupsOperationOptions {
return CheckMemberGroupsOperationOptions{}
}
func (o CheckMemberGroupsOperationOptions) ToHeaders() *client.Headers {
out := client.Headers{}
return &out
}
func (o CheckMemberGroupsOperationOptions) ToOData() *odata.Query {
out := odata.Query{}
if o.Metadata != nil {
out.Metadata = *o.Metadata
}
if o.Skip != nil {
out.Skip = int(*o.Skip)
}
if o.Top != nil {
out.Top = int(*o.Top)
}
return &out
}
func (o CheckMemberGroupsOperationOptions) ToQuery() *client.QueryParams {
out := client.QueryParams{}
return &out
}
type CheckMemberGroupsCustomPager struct {
NextLink *odata.Link `json:"@odata.nextLink"`
}
func (p *CheckMemberGroupsCustomPager) NextPageLink() *odata.Link {
defer func() {
p.NextLink = nil
}()
return p.NextLink
}
// CheckMemberGroups - Invoke action checkMemberGroups. Check for membership in a specified list of group IDs, and
// return from that list the IDs of groups where a specified object is a member. The specified object can be of one of
// the following types: - user - group - service principal - organizational contact - device - directory object This
// function is transitive. You can check up to a maximum of 20 groups per request. This function supports all groups
// provisioned in Microsoft Entra ID. Because Microsoft 365 groups cannot contain other groups, membership in a
// Microsoft 365 group is always direct.
func (c AdministrativeUnitClient) CheckMemberGroups(ctx context.Context, id beta.AdministrativeUnitId, input CheckMemberGroupsRequest, options CheckMemberGroupsOperationOptions) (result CheckMemberGroupsOperationResponse, err error) {
opts := client.RequestOptions{
ContentType: "application/json; charset=utf-8",
ExpectedStatusCodes: []int{
http.StatusOK,
},
HttpMethod: http.MethodPost,
OptionsObject: options,
Pager: &CheckMemberGroupsCustomPager{},
Path: fmt.Sprintf("%s/checkMemberGroups", id.ID()),
RetryFunc: options.RetryFunc,
}
req, err := c.Client.NewRequest(ctx, opts)
if err != nil {
return
}
var resp *client.Response
resp, err = req.ExecutePaged(ctx)
if resp != nil {
result.OData = resp.OData
result.HttpResponse = resp.Response
}
if err != nil {
return
}
var values struct {
Values *[]string `json:"value"`
}
if err = resp.Unmarshal(&values); err != nil {
return
}
result.Model = values.Values
return
}
// CheckMemberGroupsComplete retrieves all the results into a single object
func (c AdministrativeUnitClient) CheckMemberGroupsComplete(ctx context.Context, id beta.AdministrativeUnitId, input CheckMemberGroupsRequest, options CheckMemberGroupsOperationOptions) (result CheckMemberGroupsCompleteResult, err error) {
items := make([]string, 0)
resp, err := c.CheckMemberGroups(ctx, id, input, options)
if err != nil {
result.LatestHttpResponse = resp.HttpResponse
err = fmt.Errorf("loading results: %+v", err)
return
}
if resp.Model != nil {
for _, v := range *resp.Model {
items = append(items, v)
}
}
result = CheckMemberGroupsCompleteResult{
LatestHttpResponse: resp.HttpResponse,
Items: items,
}
return
}