func()

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
}