@@ -43,6 +43,13 @@ type ProjectsRes struct {
43
43
Items []Project
44
44
}
45
45
46
+ type WorkspaceMembers struct {
47
+ Page int
48
+ Pagelen int
49
+ Size int
50
+ Members []User
51
+ }
52
+
46
53
func (t * Permission ) GetUserPermissions (organization , member string ) (* Permission , error ) {
47
54
urlStr := t .c .requestUrl ("/workspaces/%s/permissions?q=user.nickname=\" %s\" " , organization , member )
48
55
response , err := t .c .executePaginated ("GET" , urlStr , "" )
@@ -83,9 +90,14 @@ func (t *Workspace) Get(workspace string) (*Workspace, error) {
83
90
return decodeWorkspace (response )
84
91
}
85
92
86
- func (w * Workspace ) Members (teamname string ) (interface {} , error ) {
93
+ func (w * Workspace ) Members (teamname string ) (* WorkspaceMembers , error ) {
87
94
urlStr := w .c .requestUrl ("/workspaces/%s/members" , teamname )
88
- return w .c .execute ("GET" , urlStr , "" )
95
+ response , err := w .c .execute ("GET" , urlStr , "" )
96
+ if err != nil {
97
+ return nil , err
98
+ }
99
+
100
+ return decodeMembers (response )
89
101
}
90
102
91
103
func (w * Workspace ) Projects (teamname string ) (* ProjectsRes , error ) {
@@ -217,3 +229,43 @@ func decodeProjects(projectResponse interface{}) (*ProjectsRes, error) {
217
229
}
218
230
return & res , nil
219
231
}
232
+
233
+ func decodeMembers (membersResponse interface {}) (* WorkspaceMembers , error ) {
234
+ responseMap , ok := membersResponse .(map [string ]interface {})
235
+ if ! ok {
236
+ return nil , errors .New ("not a valid format" )
237
+ }
238
+
239
+ var members []User
240
+ userArray := responseMap ["values" ].([]interface {})
241
+ for _ , userEntry := range userArray {
242
+ userEntryMap := userEntry .(map [string ]interface {})
243
+
244
+ member , err := decodeUser (userEntryMap ["user" ])
245
+ if err != nil {
246
+ return nil , err
247
+ }
248
+ members = append (members , * member )
249
+ }
250
+
251
+ page , ok := responseMap ["page" ].(int )
252
+ if ! ok {
253
+ page = 0
254
+ }
255
+ pagelen , ok := responseMap ["pagelen" ].(int )
256
+ if ! ok {
257
+ pagelen = 0
258
+ }
259
+ size , ok := responseMap ["size" ].(int )
260
+ if ! ok {
261
+ size = 0
262
+ }
263
+
264
+ workspaceMembers := WorkspaceMembers {
265
+ Page : page ,
266
+ Pagelen : pagelen ,
267
+ Size : size ,
268
+ Members : members ,
269
+ }
270
+ return & workspaceMembers , nil
271
+ }
0 commit comments