@@ -2,12 +2,15 @@ package provider
2
2
3
3
import (
4
4
"context"
5
+ "net/http"
5
6
6
7
"github.com/hashicorp/terraform-plugin-framework/datasource"
7
8
"github.com/hashicorp/terraform-plugin-framework/datasource/schema"
9
+ "github.com/hashicorp/terraform-plugin-framework/diag"
8
10
"github.com/hashicorp/terraform-plugin-framework/types"
9
- "github.com/jianyuan/go- sentry/v2/sentry "
11
+ "github.com/jianyuan/terraform-provider- sentry/internal/apiclient "
10
12
"github.com/jianyuan/terraform-provider-sentry/internal/diagutils"
13
+ "github.com/jianyuan/terraform-provider-sentry/internal/sentryclient"
11
14
)
12
15
13
16
type AllOrganizationMembersDataSourceMemberModel struct {
@@ -16,11 +19,10 @@ type AllOrganizationMembersDataSourceMemberModel struct {
16
19
Role types.String `tfsdk:"role"`
17
20
}
18
21
19
- func (m * AllOrganizationMembersDataSourceMemberModel ) Fill (organization string , member sentry .OrganizationMember ) error {
20
- m .Id = types .StringValue (member .ID )
22
+ func (m * AllOrganizationMembersDataSourceMemberModel ) Fill (ctx context. Context , member apiclient .OrganizationMember ) ( diags diag. Diagnostics ) {
23
+ m .Id = types .StringValue (member .Id )
21
24
m .Email = types .StringValue (member .Email )
22
25
m .Role = types .StringValue (member .OrgRole )
23
-
24
26
return nil
25
27
}
26
28
@@ -29,18 +31,12 @@ type AllOrganizationMembersDataSourceModel struct {
29
31
Members []AllOrganizationMembersDataSourceMemberModel `tfsdk:"members"`
30
32
}
31
33
32
- func (m * AllOrganizationMembersDataSourceModel ) Fill (organization string , members []sentry.OrganizationMember ) error {
33
- m .Organization = types .StringValue (organization )
34
-
35
- for _ , member := range members {
36
- mm := AllOrganizationMembersDataSourceMemberModel {}
37
- if err := mm .Fill (organization , member ); err != nil {
38
- return err
39
- }
40
- m .Members = append (m .Members , mm )
34
+ func (m * AllOrganizationMembersDataSourceModel ) Fill (ctx context.Context , members []apiclient.OrganizationMember ) (diags diag.Diagnostics ) {
35
+ m .Members = make ([]AllOrganizationMembersDataSourceMemberModel , len (members ))
36
+ for i , member := range members {
37
+ diags .Append (m .Members [i ].Fill (ctx , member )... )
41
38
}
42
-
43
- return nil
39
+ return
44
40
}
45
41
46
42
var _ datasource.DataSource = & AllOrganizationMembersDataSource {}
@@ -96,28 +92,29 @@ func (d *AllOrganizationMembersDataSource) Read(ctx context.Context, req datasou
96
92
return
97
93
}
98
94
99
- var allMembers []sentry .OrganizationMember
100
- params := & sentry. ListCursorParams {}
95
+ var allMembers []apiclient .OrganizationMember
96
+ params := & apiclient. ListOrganizationMembersParams {}
101
97
102
98
for {
103
- members , apiResp , err := d .client . OrganizationMembers . List (ctx , data .Organization .ValueString (), params )
99
+ httpResp , err := d .apiClient . ListOrganizationMembersWithResponse (ctx , data .Organization .ValueString (), params )
104
100
if err != nil {
105
101
resp .Diagnostics .Append (diagutils .NewClientError ("read" , err ))
106
102
return
103
+ } else if httpResp .StatusCode () != http .StatusOK || httpResp .JSON200 == nil {
104
+ resp .Diagnostics .Append (diagutils .NewClientStatusError ("read" , httpResp .StatusCode (), httpResp .Body ))
105
+ return
107
106
}
108
107
109
- for _ , member := range members {
110
- allMembers = append (allMembers , * member )
111
- }
108
+ allMembers = append (allMembers , * httpResp .JSON200 ... )
112
109
113
- if apiResp .Cursor == "" {
110
+ params .Cursor = sentryclient .ParseNextPaginationCursor (httpResp .HTTPResponse )
111
+ if params .Cursor == nil {
114
112
break
115
113
}
116
- params .Cursor = apiResp .Cursor
117
114
}
118
115
119
- if err := data . Fill (data .Organization . ValueString () , allMembers ); err != nil {
120
- resp .Diagnostics .Append ( diagutils . NewFillError ( err ))
116
+ resp . Diagnostics . Append (data .Fill ( ctx , allMembers )... )
117
+ if resp .Diagnostics .HasError () {
121
118
return
122
119
}
123
120
0 commit comments