version: add a User-Agent to aid analytics on use of this tool
Change-Id: I31f823cd6679255bc3a6341b5e140a91027a2749
Reviewed-on: https://go-review.googlesource.com/34550
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
diff --git a/version/version.go b/version/version.go
index 968e650..e6e6ca4 100644
--- a/version/version.go
+++ b/version/version.go
@@ -28,6 +28,10 @@
"golang.org/x/build/envutil"
)
+func init() {
+ http.DefaultTransport = &userAgentTransport{http.DefaultTransport}
+}
+
// Run runs the "go" tool of the provided Go version.
func Run(version string) {
log.SetFlags(0)
@@ -306,12 +310,12 @@
}
}()
c := &http.Client{
- Transport: &http.Transport{
+ Transport: &userAgentTransport{&http.Transport{
// It's already compressed. Prefer accurate ContentLength.
// (Not that GCS would try to compress it, though)
DisableCompression: true,
DisableKeepAlives: true,
- },
+ }},
}
res, err := c.Get(srcURL)
if err != nil {
@@ -432,3 +436,17 @@
}
return true
}
+
+type userAgentTransport struct {
+ rt http.RoundTripper
+}
+
+func (uat userAgentTransport) RoundTrip(r *http.Request) (*http.Response, error) {
+ version := runtime.Version()
+ if strings.Contains(version, "devel") {
+ // Strip the SHA hash and date. We don't want spaces or other tokens (see RFC2616 14.43)
+ version = "devel"
+ }
+ r.Header.Set("User-Agent", "golang-x-build-version/"+version)
+ return uat.rt.RoundTrip(r)
+}