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  }