in api/groups.go [127:167]
func (f *RemoteGroupFetcher) FetchPRRApprovers() ([]string, error) {
resp, err := http.Get(f.OwnersAliasesURL)
if err != nil {
return nil, errors.Wrap(err, "fetching owners aliases")
}
defer resp.Body.Close()
if resp.StatusCode != http.StatusOK {
return nil, errors.New(
fmt.Sprintf(
"invalid status code when fetching owners aliases: %d",
resp.StatusCode,
),
)
}
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
return nil, errors.Wrap(err, "reading owners aliases")
}
config := &struct {
Data map[string][]string `json:"aliases,omitempty" yaml:"aliases,omitempty"`
}{}
if err := yaml.UnmarshalStrict(body, config); err != nil {
return nil, errors.Wrap(err, "unmarshalling owners aliases")
}
var result []string
result = append(result, config.Data[f.PRRApproversAlias]...)
if len(result) == 0 {
return nil, errors.New("retrieved zero PRR approvers, which is unexpected")
}
sort.Strings(result)
return result, nil
}