func()

in app/registry/public_api.go [232:289]


func (a *App) makeViewPublicAPIMR(mr gerrit.GerritMergeRequest, registryName string) (PublicAPI, error) {
	var publicAPI PublicAPI

	if mr.Status.ChangeID == "" {
		return publicAPI, nil
	}

	changeInfo, _, err := a.Gerrit.GoGerritClient().Changes.GetChangeDetail(mr.Status.ChangeID, &goGerrit.ChangeOptions{})

	if err != nil {
		return publicAPI, fmt.Errorf("unable to get gerrit change details, %w", err)
	}
	changesContent, err := a.getChangeContentData(changeInfo.ID, ValuesLocation, changeInfo.Project)

	if err != nil {
		return publicAPI, fmt.Errorf("unable to get gerrit change, %w", err)
	}

	var (
		url  string
		data Values
	)

	if err := yaml.Unmarshal([]byte(changesContent), &data); err != nil {
		return publicAPI, fmt.Errorf("unable to decode yaml, %w", err)
	}

	name := mr.Labels[MRLabelPublicApiName]

	vals, err := GetValuesFromGit(registryName, MasterBranch, a.Gerrit)
	if err != nil {
		return publicAPI, fmt.Errorf("unable to get values from git, %w", err)
	}

	for _, v := range vals.PublicApi {
		if v.Name == name {
			url = v.URL
		}
	}

	if len(data.PublicApi) > 0 {
		for _, pub := range data.PublicApi {
			if pub.Name == name {
				if pub.URL != "" {
					url = pub.URL
				}
			}
		}
	}

	if mr.Status.Value == gerrit.StatusNew {
		publicAPI = PublicAPI{Name: name, URL: url, Enabled: true, StatusRegistration: publicAPIStatusInactive}
	} else if mr.Status.Value != gerrit.StatusMerged && mr.Status.Value != gerrit.StatusAbandoned {
		publicAPI = PublicAPI{Name: name, URL: url, Enabled: true, StatusRegistration: publicAPIStatusFailed}
	}

	return publicAPI, nil
}