github.com/saucelabs/saucectl@v0.175.1/internal/http/request.go (about) 1 package http 2 3 import ( 4 "context" 5 "io" 6 "net/http" 7 8 "github.com/hashicorp/go-retryablehttp" 9 "github.com/saucelabs/saucectl/internal/version" 10 ) 11 12 // NewRequestWithContext is a wrapper around http.NewRequestWithContext that modifies the request by adding additional 13 // headers. 14 func NewRequestWithContext(ctx context.Context, method, url string, body io.Reader) (*http.Request, error) { 15 r, err := http.NewRequestWithContext(ctx, method, url, body) 16 if err != nil { 17 return r, err 18 } 19 r.Header.Set("User-Agent", "saucectl/"+version.Version) 20 21 return r, err 22 } 23 24 // NewRetryableRequestWithContext is a wrapper around retryablehttp.NewRequestWithContext that modifies the request by 25 // adding additional headers. 26 func NewRetryableRequestWithContext(ctx context.Context, method, url string, body io.Reader) (*retryablehttp.Request, error) { 27 r, err := retryablehttp.NewRequestWithContext(ctx, method, url, body) 28 if err != nil { 29 return r, err 30 } 31 r.Header.Set("User-Agent", "saucectl/"+version.Version) 32 33 return r, err 34 }