internal/platform/user_agent.go (36 lines of code) (raw):

// Copyright 2023 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package platform import ( "fmt" "html/template" "strings" "github.com/GoogleCloudPlatform/ops-agent/internal/version" ) var versionLabelTemplate = template.Must(template.New("versionlabel").Parse(`{{.Prefix}}/{{.AgentVersion}}-{{.BuildDistro}}`)) var userAgentTemplate = template.Must(template.New("useragent").Parse(`{{.Prefix}}/{{.AgentVersion}} (BuildDistro={{.BuildDistro}};Platform={{.Platform}};ShortName={{.ShortName}};ShortVersion={{.ShortVersion}})`)) func expandTemplate(t *template.Template, prefix string, extraParams map[string]string) (string, error) { params := map[string]string{ "Prefix": prefix, "AgentVersion": version.Version, "BuildDistro": version.BuildDistro, } for k, v := range extraParams { params[k] = v } var b strings.Builder if err := t.Execute(&b, params); err != nil { fmt.Println(err.Error()) return "", err } return b.String(), nil } func (p Platform) VersionLabel(prefix string) (string, error) { return expandTemplate(versionLabelTemplate, prefix, nil) } func (p Platform) UserAgent(prefix string) (string, error) { extraParams := map[string]string{ "Platform": p.HostInfo.OS, "ShortName": p.HostInfo.Platform, "ShortVersion": p.HostInfo.PlatformVersion, } return expandTemplate(userAgentTemplate, prefix, extraParams) }