in lib/notifiers/notifiers.go [615:643]
func AddUTMParams(logURL string, medium UTMMedium) (string, error) {
u, err := url.Parse(logURL)
if err != nil {
return "", fmt.Errorf("failed to parse URL %q: %w", logURL, err)
}
// Use ParseQuery to fail if we get malformed params to start with, since it should never happen.
vals, err := url.ParseQuery(u.RawQuery)
if err != nil {
return "", fmt.Errorf("failed to parse query from %q: %w", logURL, err)
}
var m string
switch medium {
case EmailMedium, StorageMedium, ChatMedium, HTTPMedium, OtherMedium:
m = string(medium)
default:
return "", fmt.Errorf("unknown UTM medium: %q", medium)
}
// Use `Add` instead of `Set` so we don't override any existing params.
vals.Add("utm_campaign", "google-cloud-build-notifiers")
vals.Add("utm_medium", m)
vals.Add("utm_source", "google-cloud-build")
u.RawQuery = vals.Encode()
return u.String(), nil
}