Merge pull request #9721 from Mongey/cm-headers

Allow setting of headers in api client
This commit is contained in:
Mahmood Ali 2021-01-26 10:55:22 -05:00 committed by GitHub
commit 2a279b2a74
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 36 additions and 0 deletions

View File

@ -155,6 +155,8 @@ type Config struct {
//
// TLSConfig is ignored if HttpClient is set.
TLSConfig *TLSConfig
Headers http.Header
}
// ClientConfig copies the configuration with a new client address, region, and
@ -527,6 +529,7 @@ type request struct {
body io.Reader
obj interface{}
ctx context.Context
header http.Header
}
// setQueryOptions is used to annotate the request with
@ -612,6 +615,8 @@ func (r *request) toHTTP() (*http.Request, error) {
return nil, err
}
req.Header = r.header
// Optionally configure HTTP basic authentication
if r.url.User != nil {
username := r.url.User.Username()
@ -649,6 +654,7 @@ func (c *Client) newRequest(method, path string) (*request, error) {
Path: u.Path,
RawPath: u.RawPath,
},
header: make(http.Header),
params: make(map[string][]string),
}
if c.config.Region != "" {
@ -671,6 +677,10 @@ func (c *Client) newRequest(method, path string) (*request, error) {
}
}
if c.config.Headers != nil {
r.header = c.config.Headers
}
return r, nil
}

View File

@ -341,6 +341,22 @@ func TestParseWriteMeta(t *testing.T) {
}
}
func TestClientHeader(t *testing.T) {
t.Parallel()
c, s := makeClient(t, func(c *Config) {
c.Headers = http.Header{
"Hello": []string{"World"},
}
}, nil)
defer s.Stop()
r, _ := c.newRequest("GET", "/v1/jobs")
if r.header.Get("Hello") != "World" {
t.Fatalf("bad: %v", r.header)
}
}
func TestQueryString(t *testing.T) {
t.Parallel()
c, s := makeClient(t, nil, nil)

View File

@ -155,6 +155,8 @@ type Config struct {
//
// TLSConfig is ignored if HttpClient is set.
TLSConfig *TLSConfig
Headers http.Header
}
// ClientConfig copies the configuration with a new client address, region, and
@ -527,6 +529,7 @@ type request struct {
body io.Reader
obj interface{}
ctx context.Context
header http.Header
}
// setQueryOptions is used to annotate the request with
@ -612,6 +615,8 @@ func (r *request) toHTTP() (*http.Request, error) {
return nil, err
}
req.Header = r.header
// Optionally configure HTTP basic authentication
if r.url.User != nil {
username := r.url.User.Username()
@ -649,6 +654,7 @@ func (c *Client) newRequest(method, path string) (*request, error) {
Path: u.Path,
RawPath: u.RawPath,
},
header: make(http.Header),
params: make(map[string][]string),
}
if c.config.Region != "" {
@ -671,6 +677,10 @@ func (c *Client) newRequest(method, path string) (*request, error) {
}
}
if c.config.Headers != nil {
r.header = c.config.Headers
}
return r, nil
}