github.com/wikibal01/hashicorp-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  }