Skip to content

Commit f51660a

Browse files
authored
add list effective default reviewers endpoint (ktrysmt#249)
1 parent 9013ecc commit f51660a

File tree

1 file changed

+72
-0
lines changed

1 file changed

+72
-0
lines changed

repository.go

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,7 @@ type DefaultReviewer struct {
200200
Links map[string]map[string]string
201201
}
202202

203+
203204
type DefaultReviewers struct {
204205
Page int
205206
Pagelen int
@@ -208,6 +209,20 @@ type DefaultReviewers struct {
208209
Next string
209210
DefaultReviewers []DefaultReviewer
210211
}
212+
type EffectiveDefaultReviewer struct {
213+
User DefaultReviewer
214+
Type string
215+
ReviewerType string `mapstructure:"reviewer_type"`
216+
}
217+
218+
type EffectiveDefaultReviewers struct {
219+
Page int
220+
Pagelen int
221+
MaxDepth int
222+
Size int
223+
Next string
224+
EffectiveDefaultReviewers []EffectiveDefaultReviewer
225+
}
211226

212227
type Group struct {
213228
AccountPrivilege string `mapstructure:"account_privilege"`
@@ -626,6 +641,16 @@ func (r *Repository) DeleteDefaultReviewer(rdro *RepositoryDefaultReviewerOption
626641
return r.c.execute("DELETE", urlStr, "")
627642
}
628643

644+
func (r *Repository) ListEffectiveDefaultReviewers(ro *RepositoryOptions) (*EffectiveDefaultReviewers, error) {
645+
urlStr := r.c.requestUrl("/repositories/%s/%s/effective-default-reviewers", ro.Owner, ro.RepoSlug)
646+
647+
res, err := r.c.executePaginated("GET", urlStr, "", nil)
648+
if err != nil {
649+
return nil, err
650+
}
651+
return decodeEffectiveDefaultReviewers(res)
652+
}
653+
629654
func (r *Repository) GetPipelineConfig(rpo *RepositoryPipelineOptions) (*Pipeline, error) {
630655
urlStr := r.c.requestUrl("/repositories/%s/%s/pipelines_config", rpo.Owner, rpo.RepoSlug)
631656
response, err := r.c.execute("GET", urlStr, "")
@@ -1761,6 +1786,53 @@ func decodeDefaultReviewers(response interface{}) (*DefaultReviewers, error) {
17611786
return &defaultReviewerVariables, nil
17621787
}
17631788

1789+
1790+
func decodeEffectiveDefaultReviewers(response interface{}) (*EffectiveDefaultReviewers, error) {
1791+
responseMap := response.(map[string]interface{})
1792+
values := responseMap["values"].([]interface{})
1793+
var variables []EffectiveDefaultReviewer
1794+
for _, variable := range values {
1795+
var defaultReviewerVariable EffectiveDefaultReviewer
1796+
err := mapstructure.Decode(variable, &defaultReviewerVariable)
1797+
if err == nil {
1798+
variables = append(variables, defaultReviewerVariable)
1799+
}
1800+
}
1801+
1802+
page, ok := responseMap["page"].(float64)
1803+
if !ok {
1804+
page = 0
1805+
}
1806+
1807+
pagelen, ok := responseMap["pagelen"].(float64)
1808+
if !ok {
1809+
pagelen = 0
1810+
}
1811+
max_depth, ok := responseMap["max_depth"].(float64)
1812+
if !ok {
1813+
max_depth = 0
1814+
}
1815+
size, ok := responseMap["size"].(float64)
1816+
if !ok {
1817+
size = 0
1818+
}
1819+
1820+
next, ok := responseMap["next"].(string)
1821+
if !ok {
1822+
next = ""
1823+
}
1824+
1825+
defaultReviewerVariables := EffectiveDefaultReviewers{
1826+
Page: int(page),
1827+
Pagelen: int(pagelen),
1828+
MaxDepth: int(max_depth),
1829+
Size: int(size),
1830+
Next: next,
1831+
EffectiveDefaultReviewers: variables,
1832+
}
1833+
return &defaultReviewerVariables, nil
1834+
}
1835+
17641836
func decodeGroupPermissions(response interface{}) (*GroupPermission, error) {
17651837
var groupPermission GroupPermission
17661838
err := mapstructure.Decode(response, &groupPermission)

0 commit comments

Comments
 (0)