-
Notifications
You must be signed in to change notification settings - Fork 63
Expand file tree
/
Copy pathmethod_getmembergroups.go
More file actions
142 lines (118 loc) · 3.77 KB
/
method_getmembergroups.go
File metadata and controls
142 lines (118 loc) · 3.77 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
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 GetMemberGroupsOperationResponse struct {
HttpResponse *http.Response
OData *odata.OData
Model *[]string
}
type GetMemberGroupsCompleteResult struct {
LatestHttpResponse *http.Response
Items []string
}
type GetMemberGroupsOperationOptions struct {
Metadata *odata.Metadata
RetryFunc client.RequestRetryFunc
Skip *int64
Top *int64
}
func DefaultGetMemberGroupsOperationOptions() GetMemberGroupsOperationOptions {
return GetMemberGroupsOperationOptions{}
}
func (o GetMemberGroupsOperationOptions) ToHeaders() *client.Headers {
out := client.Headers{}
return &out
}
func (o GetMemberGroupsOperationOptions) 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 GetMemberGroupsOperationOptions) ToQuery() *client.QueryParams {
out := client.QueryParams{}
return &out
}
type GetMemberGroupsCustomPager struct {
NextLink *odata.Link `json:"@odata.nextLink"`
}
func (p *GetMemberGroupsCustomPager) NextPageLink() *odata.Link {
defer func() {
p.NextLink = nil
}()
return p.NextLink
}
// GetMemberGroups - Invoke action getMemberGroups. Return all the group IDs for the groups that the specified user,
// group, service principal, organizational contact, device, or directory object is a member of. This function is
// transitive. This API returns up to 11,000 group IDs. If more than 11,000 results are available, it returns a 400 Bad
// Request error with the DirectoryResultSizeLimitExceeded error code. If you get the DirectoryResultSizeLimitExceeded
// error code, use the List group transitive memberOf API instead.
func (c AdministrativeUnitClient) GetMemberGroups(ctx context.Context, id beta.AdministrativeUnitId, input GetMemberGroupsRequest, options GetMemberGroupsOperationOptions) (result GetMemberGroupsOperationResponse, err error) {
opts := client.RequestOptions{
ContentType: "application/json; charset=utf-8",
ExpectedStatusCodes: []int{
http.StatusOK,
},
HttpMethod: http.MethodPost,
OptionsObject: options,
Pager: &GetMemberGroupsCustomPager{},
Path: fmt.Sprintf("%s/getMemberGroups", 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
}
// GetMemberGroupsComplete retrieves all the results into a single object
func (c AdministrativeUnitClient) GetMemberGroupsComplete(ctx context.Context, id beta.AdministrativeUnitId, input GetMemberGroupsRequest, options GetMemberGroupsOperationOptions) (result GetMemberGroupsCompleteResult, err error) {
items := make([]string, 0)
resp, err := c.GetMemberGroups(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 = GetMemberGroupsCompleteResult{
LatestHttpResponse: resp.HttpResponse,
Items: items,
}
return
}