Skip to content

Commit eeed8d4

Browse files
aleksmausAnaethelion
authored andcommitted
Allow to overwrite User-Agent http request header (#335) (#336)
1 parent f2a8bee commit eeed8d4

File tree

2 files changed

+25
-1
lines changed

2 files changed

+25
-1
lines changed

estransport/estransport.go

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,8 @@ const (
4545

4646
// esCompatHeader defines the env var for Compatibility header.
4747
esCompatHeader = "ELASTIC_CLIENT_APIVERSIONING"
48+
49+
userAgentHeader = "User-Agent"
4850
)
4951

5052
var (
@@ -474,7 +476,14 @@ func (c *Client) setReqAuth(u *url.URL, req *http.Request) *http.Request {
474476
}
475477

476478
func (c *Client) setReqUserAgent(req *http.Request) *http.Request {
477-
req.Header.Set("User-Agent", userAgent)
479+
if len(c.header) > 0 {
480+
ua := c.header.Get(userAgentHeader)
481+
if ua != "" {
482+
req.Header.Set(userAgentHeader, ua)
483+
return req
484+
}
485+
}
486+
req.Header.Set(userAgentHeader, userAgent)
478487
return req
479488
}
480489

estransport/estransport_internal_test.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -398,6 +398,21 @@ func TestTransportPerform(t *testing.T) {
398398
}
399399
})
400400

401+
t.Run("Overwrites UserAgent", func(t *testing.T) {
402+
u, _ := url.Parse("http://example.com")
403+
404+
tp, _ := New(Config{URLs: []*url.URL{u}, Header: http.Header{
405+
userAgentHeader: []string{"Elastic-Fleet-Server/7.11.1 (darwin; amd64; Go 1.16.6)"},
406+
}})
407+
408+
req, _ := http.NewRequest("GET", "/abc", nil)
409+
tp.setReqUserAgent(req)
410+
411+
if !strings.HasPrefix(req.UserAgent(), "Elastic-Fleet-Server") {
412+
t.Errorf("Unexpected user agent: %s", req.UserAgent())
413+
}
414+
})
415+
401416
t.Run("Sets global HTTP request headers", func(t *testing.T) {
402417
hdr := http.Header{}
403418
hdr.Set("X-Foo", "bar")

0 commit comments

Comments
 (0)