github.com/gavriloga/terraform@v0.11.12-beta1/httpclient/useragent.go (about) 1 package httpclient 2 3 import ( 4 "fmt" 5 "log" 6 "net/http" 7 "os" 8 "strings" 9 10 "github.com/hashicorp/terraform/version" 11 ) 12 13 const userAgentFormat = "Terraform/%s" 14 const uaEnvVar = "TF_APPEND_USER_AGENT" 15 16 func UserAgentString() string { 17 ua := fmt.Sprintf(userAgentFormat, version.Version) 18 19 if add := os.Getenv(uaEnvVar); add != "" { 20 add = strings.TrimSpace(add) 21 if len(add) > 0 { 22 ua += " " + add 23 log.Printf("[DEBUG] Using modified User-Agent: %s", ua) 24 } 25 } 26 27 return ua 28 } 29 30 type userAgentRoundTripper struct { 31 inner http.RoundTripper 32 userAgent string 33 } 34 35 func (rt *userAgentRoundTripper) RoundTrip(req *http.Request) (*http.Response, error) { 36 if _, ok := req.Header["User-Agent"]; !ok { 37 req.Header.Set("User-Agent", rt.userAgent) 38 } 39 return rt.inner.RoundTrip(req) 40 }