@@ -183,6 +183,24 @@ type DeploymentVariable struct {
183
183
Secured bool
184
184
}
185
185
186
+ type DefaultReviewer struct {
187
+ Nickname string
188
+ DisplayName string `mapstructure:"display_name"`
189
+ Type string
190
+ Uuid string
191
+ AccountId string `mapstructure:"account_id"`
192
+ Links map [string ]map [string ]string
193
+ }
194
+
195
+ type DefaultReviewers struct {
196
+ Page int
197
+ Pagelen int
198
+ MaxDepth int
199
+ Size int
200
+ Next string
201
+ DefaultReviewers []DefaultReviewer
202
+ }
203
+
186
204
func (r * Repository ) Create (ro * RepositoryOptions ) (* Repository , error ) {
187
205
data := r .buildRepositoryBody (ro )
188
206
urlStr := r .c .requestUrl ("/repositories/%s/%s" , ro .Owner , ro .RepoSlug )
@@ -405,9 +423,37 @@ func (r *Repository) ListForks(ro *RepositoryOptions) (interface{}, error) {
405
423
return r .c .execute ("GET" , urlStr , "" )
406
424
}
407
425
408
- func (r * Repository ) ListDefaultReviewers (ro * RepositoryOptions ) (interface {} , error ) {
426
+ func (r * Repository ) ListDefaultReviewers (ro * RepositoryOptions ) (* DefaultReviewers , error ) {
409
427
urlStr := r .c .requestUrl ("/repositories/%s/%s/default-reviewers?pagelen=1" , ro .Owner , ro .RepoSlug )
410
- return r .c .execute ("GET" , urlStr , "" )
428
+
429
+ res , err := r .c .execute ("GET" , urlStr , "" )
430
+ if err != nil {
431
+ return nil , err
432
+ }
433
+ return decodeDefaultReviewers (res )
434
+ }
435
+
436
+ func (r * Repository ) GetDefaultReviewer (rdro * RepositoryDefaultReviewerOptions ) (* DefaultReviewer , error ) {
437
+ urlStr := r .c .requestUrl ("/repositories/%s/%s/default-reviewers/%s" , rdro .Owner , rdro .RepoSlug , rdro .Username )
438
+ res , err := r .c .execute ("GET" , urlStr , "" )
439
+ if err != nil {
440
+ return nil , fmt .Errorf ("unable to get default reviewer: %w" , err )
441
+ }
442
+ return decodeDefaultReviewer (res )
443
+ }
444
+
445
+ func (r * Repository ) AddDefaultReviewer (rdro * RepositoryDefaultReviewerOptions ) (* DefaultReviewer , error ) {
446
+ urlStr := r .c .requestUrl ("/repositories/%s/%s/default-reviewers/%s" , rdro .Owner , rdro .RepoSlug , rdro .Username )
447
+ res , err := r .c .execute ("PUT" , urlStr , "" )
448
+ if err != nil {
449
+ return nil , err
450
+ }
451
+ return decodeDefaultReviewer (res )
452
+ }
453
+
454
+ func (r * Repository ) DeleteDefaultReviewer (rdro * RepositoryDefaultReviewerOptions ) (interface {}, error ) {
455
+ urlStr := r .c .requestUrl ("/repositories/%s/%s/default-reviewers/%s" , rdro .Owner , rdro .RepoSlug , rdro .Username )
456
+ return r .c .execute ("DELETE" , urlStr , "" )
411
457
}
412
458
413
459
func (r * Repository ) UpdatePipelineConfig (rpo * RepositoryPipelineOptions ) (* Pipeline , error ) {
@@ -1262,3 +1308,58 @@ func (rf RepositoryFile) String() string {
1262
1308
func (rb RepositoryBlob ) String () string {
1263
1309
return string (rb .Content )
1264
1310
}
1311
+
1312
+ func decodeDefaultReviewer (response interface {}) (* DefaultReviewer , error ) {
1313
+ var defaultReviewerVariable DefaultReviewer
1314
+ err := mapstructure .Decode (response , & defaultReviewerVariable )
1315
+ if err != nil {
1316
+ return nil , err
1317
+ }
1318
+ return & defaultReviewerVariable , nil
1319
+ }
1320
+
1321
+ func decodeDefaultReviewers (response interface {}) (* DefaultReviewers , error ) {
1322
+ responseMap := response .(map [string ]interface {})
1323
+ values := responseMap ["values" ].([]interface {})
1324
+ var variables []DefaultReviewer
1325
+ for _ , variable := range values {
1326
+ var defaultReviewerVariable DefaultReviewer
1327
+ err := mapstructure .Decode (variable , & defaultReviewerVariable )
1328
+ if err == nil {
1329
+ variables = append (variables , defaultReviewerVariable )
1330
+ }
1331
+ }
1332
+
1333
+ page , ok := responseMap ["page" ].(float64 )
1334
+ if ! ok {
1335
+ page = 0
1336
+ }
1337
+
1338
+ pagelen , ok := responseMap ["pagelen" ].(float64 )
1339
+ if ! ok {
1340
+ pagelen = 0
1341
+ }
1342
+ max_depth , ok := responseMap ["max_depth" ].(float64 )
1343
+ if ! ok {
1344
+ max_depth = 0
1345
+ }
1346
+ size , ok := responseMap ["size" ].(float64 )
1347
+ if ! ok {
1348
+ size = 0
1349
+ }
1350
+
1351
+ next , ok := responseMap ["next" ].(string )
1352
+ if ! ok {
1353
+ next = ""
1354
+ }
1355
+
1356
+ defaultReviewerVariables := DefaultReviewers {
1357
+ Page : int (page ),
1358
+ Pagelen : int (pagelen ),
1359
+ MaxDepth : int (max_depth ),
1360
+ Size : int (size ),
1361
+ Next : next ,
1362
+ DefaultReviewers : variables ,
1363
+ }
1364
+ return & defaultReviewerVariables , nil
1365
+ }
0 commit comments