func ensureLinksAreValid()

in code/go/internal/validator/semantic/validate_changelog_links.go [51:81]


func ensureLinksAreValid(links []string) specerrors.ValidationErrors {
	type validateFn func(link *url.URL) error
	var errs specerrors.ValidationErrors

	validateLinks := []struct {
		domain       string
		validateLink validateFn
	}{
		{
			"github.com",
			validateGithubLink,
		},
	}
	for _, link := range links {
		linkURL, err := url.Parse(link)
		if err != nil {
			errs.Append(specerrors.ValidationErrors{
				specerrors.NewStructuredErrorf("invalid URL %v", err),
			})
			continue
		}
		for _, vl := range validateLinks {
			if strings.Contains(linkURL.Host, vl.domain) {
				if err = vl.validateLink(linkURL); err != nil {
					errs.Append(specerrors.ValidationErrors{specerrors.NewStructuredError(err, specerrors.UnassignedCode)})
				}
			}
		}
	}
	return errs
}